feat: Conditionally set OAuth return URL based on OAuth state

This commit is contained in:
wood chen 2025-02-21 20:23:50 +08:00
parent 4fe8f1cb11
commit 3b6117dc61

View File

@ -11,7 +11,13 @@ const clientSecret = process.env.DISCOURSE_SECRET as string;
export async function POST(_req: Request) {
const nonce = WordArray.random(16).toString();
const return_url = `${hostUrl}/authorize`;
// 检查是否存在 OAuth 状态
const oauthState = cookies().get("oauth_state");
const return_url = oauthState
? `${hostUrl}/authorize` // 如果存在 OAuth 状态,重定向到 authorize 页面
: `${hostUrl}/dashboard`; // 否则重定向到仪表板
const sso = btoa(`nonce=${nonce}&return_sso_url=${return_url}`);
const sig = hmacSHA256(sso, clientSecret).toString(Hex);