38 lines
1014 B
TypeScript
38 lines
1014 B
TypeScript
import type { NextApiRequest, NextApiResponse } from "next";
|
|
|
|
import jackson from "@calcom/features/ee/sso/lib/jackson";
|
|
|
|
import { HttpError } from "@lib/core/http/error";
|
|
|
|
// This is the callback endpoint for the OIDC provider
|
|
// A team must set this endpoint in the OIDC provider's configuration
|
|
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
if (req.method !== "GET") {
|
|
return res.status(400).send("Method not allowed");
|
|
}
|
|
|
|
const { code, state } = req.query as {
|
|
code: string;
|
|
state: string;
|
|
};
|
|
|
|
const { oauthController } = await jackson();
|
|
|
|
try {
|
|
const { redirect_url } = await oauthController.oidcAuthzResponse({ code, state });
|
|
|
|
if (!redirect_url) {
|
|
throw new HttpError({
|
|
message: "No redirect URL found",
|
|
statusCode: 500,
|
|
});
|
|
}
|
|
|
|
return res.redirect(302, redirect_url);
|
|
} catch (err) {
|
|
const { message, statusCode = 500 } = err as HttpError;
|
|
|
|
return res.status(statusCode).send(message);
|
|
}
|
|
}
|