37 lines
1.6 KiB
TypeScript
37 lines
1.6 KiB
TypeScript
import { createServerComponentClient, createRouteHandlerClient } from "@supabase/auth-helpers-nextjs";
|
|
import { getDecodedCookies } from "@/lib/server-cookies";
|
|
|
|
export const createSupabaseServerClient = async () => {
|
|
const cookieStore = await getDecodedCookies();
|
|
const supabaseUrl = process.env.SUPABASE_INTERNAL_URL ?? process.env.NEXT_PUBLIC_SUPABASE_URL;
|
|
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY ?? process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
|
|
|
|
if (!supabaseUrl || !supabaseAnonKey) {
|
|
throw new Error(
|
|
"缺少 Supabase 环境变量,请配置 NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY(可选:SUPABASE_INTERNAL_URL / SUPABASE_ANON_KEY 作为服务端内网地址)",
|
|
);
|
|
}
|
|
return createServerComponentClient({
|
|
cookies: () => cookieStore as any,
|
|
supabaseUrl,
|
|
supabaseKey: supabaseAnonKey,
|
|
} as any);
|
|
};
|
|
|
|
export const createSupabaseRouteClient = async () => {
|
|
const cookieStore = await getDecodedCookies();
|
|
const supabaseUrl = process.env.SUPABASE_INTERNAL_URL ?? process.env.NEXT_PUBLIC_SUPABASE_URL;
|
|
const supabaseAnonKey = process.env.SUPABASE_ANON_KEY ?? process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
|
|
|
|
if (!supabaseUrl || !supabaseAnonKey) {
|
|
throw new Error(
|
|
"缺少 Supabase 环境变量,请配置 NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY(可选:SUPABASE_INTERNAL_URL / SUPABASE_ANON_KEY 作为服务端内网地址)",
|
|
);
|
|
}
|
|
return createRouteHandlerClient({
|
|
cookies: () => cookieStore as any,
|
|
supabaseUrl,
|
|
supabaseKey: supabaseAnonKey,
|
|
} as any);
|
|
};
|