mirror of
https://github.com/formbricks/formbricks.git
synced 2026-05-23 02:45:21 -05:00
939fedfca4
Signed-off-by: gulshank0 <gulshanbahadur002@gmail.com> Co-authored-by: Tiago Farto <tiago@formbricks.com> Co-authored-by: Johannes <72809645+jobenjada@users.noreply.github.com> Co-authored-by: pandeymangg <anshuman.pandey9999@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Tiago <1585571+xernobyl@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Theodór Tómas <theodortomas@gmail.com> Co-authored-by: Anshuman Pandey <54475686+pandeymangg@users.noreply.github.com> Co-authored-by: Bhagya Amarasinghe <b.sithumini@yahoo.com> Co-authored-by: Chowdhury Tafsir Ahmed Siddiki <ctafsiras@gmail.com> Co-authored-by: neila <40727091+neila@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Harsh Bhat <90265455+harshsbhat@users.noreply.github.com> Co-authored-by: Harsh Bhat <harshbhat@Harshs-MacBook-Air.local> Co-authored-by: Johannes <johannes@formbricks.com> Co-authored-by: Balázs Úr <balazs@urbalazs.hu> Co-authored-by: Gulshan <gulshanbahadur002@gmail.com> Co-authored-by: Harsh Bhat <harsh121102@gmail.com> Co-authored-by: Javi Aguilar <122741+itsjavi@users.noreply.github.com> Co-authored-by: Johannes <jobenjada@users.noreply.github.com>
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { google } from "googleapis";
|
|
import { getServerSession } from "next-auth";
|
|
import { NextRequest } from "next/server";
|
|
import { responses } from "@/app/lib/api/response";
|
|
import {
|
|
GOOGLE_SHEETS_CLIENT_ID,
|
|
GOOGLE_SHEETS_CLIENT_SECRET,
|
|
GOOGLE_SHEETS_REDIRECT_URL,
|
|
} from "@/lib/constants";
|
|
import { hasUserWorkspaceAccess } from "@/lib/workspace/auth";
|
|
import { authOptions } from "@/modules/auth/lib/authOptions";
|
|
|
|
const scopes = [
|
|
"https://www.googleapis.com/auth/spreadsheets",
|
|
"https://www.googleapis.com/auth/userinfo.email",
|
|
];
|
|
|
|
export const GET = async (req: NextRequest) => {
|
|
const workspaceId = req.headers.get("workspaceId");
|
|
const session = await getServerSession(authOptions);
|
|
|
|
if (!workspaceId) {
|
|
return responses.badRequestResponse("workspaceId is missing");
|
|
}
|
|
|
|
if (!session) {
|
|
return responses.notAuthenticatedResponse();
|
|
}
|
|
|
|
const canUserAccessWorkspace = await hasUserWorkspaceAccess(session?.user.id, workspaceId);
|
|
if (!canUserAccessWorkspace) {
|
|
return responses.unauthorizedResponse();
|
|
}
|
|
|
|
const client_id = GOOGLE_SHEETS_CLIENT_ID;
|
|
const client_secret = GOOGLE_SHEETS_CLIENT_SECRET;
|
|
const redirect_uri = GOOGLE_SHEETS_REDIRECT_URL;
|
|
if (!client_id) return responses.internalServerErrorResponse("Google client id is missing");
|
|
if (!client_secret) return responses.internalServerErrorResponse("Google client secret is missing");
|
|
if (!redirect_uri) return responses.internalServerErrorResponse("Google redirect url is missing");
|
|
const oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirect_uri);
|
|
|
|
const authUrl = oAuth2Client.generateAuthUrl({
|
|
access_type: "offline",
|
|
scope: scopes,
|
|
prompt: "consent",
|
|
state: workspaceId,
|
|
});
|
|
|
|
return responses.successResponse({ authUrl });
|
|
};
|