feat: Implement Supabase-backed authentication and entitlement checks for frontend-to-backend requests.

This commit is contained in:
2569718930@qq.com
2026-03-13 11:01:44 +08:00
parent 534eef4197
commit 5b7a257087
2 changed files with 34 additions and 6 deletions
+14
View File
@@ -3,6 +3,8 @@ import { NextResponse } from "next/server";
import { createSupabaseRouteClient, hasSupabaseServerEnv } from "@/lib/supabase/server";
export const BACKEND_ENTITLEMENT_HEADER = "x-polyweather-entitlement";
export const FORWARDED_SUPABASE_USER_ID_HEADER = "x-polyweather-auth-user-id";
export const FORWARDED_SUPABASE_EMAIL_HEADER = "x-polyweather-auth-email";
type HeaderBuildResult = {
headers: HeadersInit;
@@ -36,6 +38,18 @@ export async function buildBackendRequestHeaders(
const {
data: { session },
} = await supabase.auth.getSession();
const {
data: { user },
} = await supabase.auth.getUser();
const forwardedUserId = String(user?.id || session?.user?.id || "").trim();
const forwardedEmail = String(user?.email || session?.user?.email || "").trim();
if (forwardedUserId) {
headers.set(FORWARDED_SUPABASE_USER_ID_HEADER, forwardedUserId);
}
if (forwardedEmail) {
headers.set(FORWARDED_SUPABASE_EMAIL_HEADER, forwardedEmail);
}
const accessToken = session?.access_token || "";
if (accessToken) {