36 lines
893 B
TypeScript
Executable File
36 lines
893 B
TypeScript
Executable File
import { cookies } from "next/headers";
|
|
import { createServerClient, type CookieOptions } from "@supabase/ssr";
|
|
import { readSupabasePublicConfig } from "@/lib/supabase/config";
|
|
|
|
export const supabaseServer = async () => {
|
|
const config = readSupabasePublicConfig();
|
|
if (!config) {
|
|
return null;
|
|
}
|
|
|
|
const cookieStore = await cookies();
|
|
|
|
return createServerClient(config.url, config.anonKey, {
|
|
cookies: {
|
|
getAll() {
|
|
return cookieStore.getAll();
|
|
},
|
|
setAll(
|
|
cookiesToSet: Array<{
|
|
name: string;
|
|
value: string;
|
|
options?: CookieOptions;
|
|
}>,
|
|
) {
|
|
try {
|
|
cookiesToSet.forEach(({ name, value, options }) => {
|
|
cookieStore.set(name, value, options);
|
|
});
|
|
} catch {
|
|
// Server Components may not be able to write cookies.
|
|
}
|
|
},
|
|
},
|
|
});
|
|
};
|