36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import axios from "axios";
|
|
import type { NextApiRequest, NextApiResponse } from "next";
|
|
|
|
import { WEBAPP_URL } from "@calcom/lib/constants";
|
|
|
|
import { encodeOAuthState } from "../../_utils/encodeOAuthState";
|
|
import getAppKeysFromSlug from "../../_utils/getAppKeysFromSlug";
|
|
import appConfig from "../config.json";
|
|
|
|
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
if (req.method === "GET") {
|
|
const appKeys = await getAppKeysFromSlug(appConfig.slug);
|
|
|
|
const clientId = typeof appKeys.client_id === "string" ? appKeys.client_id : "";
|
|
if (!clientId) return res.status(400).json({ message: "Zoho Bigin client_id missing." });
|
|
|
|
const redirectUri = WEBAPP_URL + `/api/integrations/${appConfig.slug}/callback`;
|
|
|
|
const authUrl = axios.getUri({
|
|
url: "https://accounts.zoho.com/oauth/v2/auth",
|
|
params: {
|
|
scope: appConfig.scope,
|
|
client_id: clientId,
|
|
response_type: "code",
|
|
redirect_uri: redirectUri,
|
|
access_type: "offline",
|
|
state: encodeOAuthState(req),
|
|
},
|
|
});
|
|
|
|
res.status(200).json({ url: authUrl });
|
|
return;
|
|
}
|
|
res.status(400).json({ message: "Invalid request method." });
|
|
}
|