Files
calendar/packages/app-store/closecom/api/_getAdd.ts
T
0657a96795 feat: Add OAuth support for closecom app linking (#17936)
* feat: Add OAuth support for closecom app linking

* Fix types

---------

Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
2024-12-10 00:18:30 +00:00

34 lines
1.0 KiB
TypeScript

import type { NextApiRequest, NextApiResponse } from "next";
import { WEBAPP_URL } from "@calcom/lib/constants";
import { defaultResponder } from "@calcom/lib/server";
import getAppKeysFromSlug from "../../_utils/getAppKeysFromSlug";
import { encodeOAuthState } from "../../_utils/oauth/encodeOAuthState";
async function handler(req: NextApiRequest, res: NextApiResponse) {
if (!req.session?.user?.id) {
return res.status(401).json({ message: "You must be logged in to do this" });
}
const { client_id } = await getAppKeysFromSlug("closecom");
if (!client_id || typeof client_id !== "string")
return res.status(400).json({ message: "Close.com client_id missing." });
const state = encodeOAuthState(req) ?? "";
const params = new URLSearchParams({
client_id,
redirect_uri: `${WEBAPP_URL}/api/integrations/closecom/callback`,
response_type: "code",
state,
});
return res.status(200).json({
url: `https://app.close.com/oauth2/authorize/?${params.toString()}`,
});
}
export default defaultResponder(handler);