mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-27 19:25:15 +02:00
refactor(web): centralize OAuth callback cookie contract (fixes #1362)
Replace the duplicated `OAUTH_RESULT_COOKIE` constant and inline payload type across the callback route and connector dialog hook with a shared `contracts/types/oauth.types.ts` module that exports: - OAUTH_RESULT_COOKIE constant - oauthCallbackResultSchema Zod schema - OAuthCallbackResult type (inferred from the schema) - parseOAuthCallbackResult() helper that returns null on invalid JSON or shape mismatch The route handler now uses the shared type to constrain the cookie payload at compile time. The consumer hook validates the cookie value through the helper instead of an unchecked JSON.parse, removing the silent runtime risk when the cookie is tampered with or its shape drifts.
This commit is contained in:
parent
fc3b39483b
commit
aa86534a52
3 changed files with 39 additions and 18 deletions
|
|
@ -1,6 +1,5 @@
|
|||
import { type NextRequest, NextResponse } from "next/server";
|
||||
|
||||
const OAUTH_RESULT_COOKIE = "connector_oauth_result";
|
||||
import { OAUTH_RESULT_COOKIE, type OAuthCallbackResult } from "@/contracts/types/oauth.types";
|
||||
|
||||
export async function GET(
|
||||
request: NextRequest,
|
||||
|
|
@ -9,12 +8,13 @@ export async function GET(
|
|||
const { search_space_id } = await params;
|
||||
const searchParams = request.nextUrl.searchParams;
|
||||
|
||||
const result = JSON.stringify({
|
||||
const payload: OAuthCallbackResult = {
|
||||
success: searchParams.get("success"),
|
||||
error: searchParams.get("error"),
|
||||
connector: searchParams.get("connector"),
|
||||
connectorId: searchParams.get("connectorId"),
|
||||
});
|
||||
};
|
||||
const result = JSON.stringify(payload);
|
||||
|
||||
const redirectUrl = new URL(`/dashboard/${search_space_id}/new-chat`, request.url);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue