/home/techb158/cosmic-risk.abdallabala.com/src/app/api/auth/sso
Edit: /home/techb158/cosmic-risk.abdallabala.com/src/app/api/auth/sso/route.js (1170B)
const { getOidcConfig, discoverProvider, generateState, stateCookieName, getCookieExpires } = require("../../../../lib/oidc");
export async function GET() {
try {
const config = getOidcConfig();
if (!config) {
return new Response(JSON.stringify({ error: "SSO not enabled" }), {
status: 501,
headers: { "Content-Type": "application/json" },
});
}
const disco = await discoverProvider(config.issuer);
const state = generateState();
const params = new URLSearchParams({
response_type: "code",
client_id: config.clientId,
redirect_uri: config.redirectUrl,
scope: "openid email profile",
state,
});
const location = `${disco.authorization_endpoint}?${params.toString()}`;
return new Response(null, {
status: 302,
headers: {
Location: location,
"Set-Cookie": `${stateCookieName()}=${state}; HttpOnly; SameSite=Lax; Path=/; Expires=${getCookieExpires()}`,
},
});
} catch (error) {
return new Response(JSON.stringify({ error: error.message }), {
status: 500,
headers: { "Content-Type": "application/json" },
});
}
}