espace-paie-odentas/app/api/organizations/route.ts
2025-10-12 17:05:46 +02:00

48 lines
1.5 KiB
TypeScript

// app/api/organizations/route.ts
import { createRouteHandlerClient } from "@supabase/auth-helpers-nextjs";
import { cookies, headers } from "next/headers";
import { detectDemoModeFromHeaders } from "@/lib/demo-detector";
import { DEMO_ORGANIZATION } from "@/lib/demo-data";
export async function GET() {
// 🎭 Vérification du mode démo en premier
const h = headers();
const isDemoMode = detectDemoModeFromHeaders(h);
if (isDemoMode) {
console.log("🎭 [API ORGANIZATIONS] Mode démo détecté - renvoi de données fictives");
return Response.json({
items: [DEMO_ORGANIZATION]
});
}
try {
const supabase = createRouteHandlerClient({ cookies });
const {
data: { user },
error: userErr,
} = await supabase.auth.getUser();
if (userErr) {
console.error("supabase.getUser error:", userErr.message);
}
if (!user) return new Response("Unauthorized", { status: 401 });
// RLS appliquée automatiquement (policies can_access_org)
const { data, error } = await supabase
.from("organizations")
.select("id,name,structure_api")
.order("name", { ascending: true });
if (error) {
console.error("organizations select error:", error.message);
return new Response(error.message, { status: 400 });
}
return Response.json({ items: data ?? [] });
} catch (e: any) {
console.error("/api/organizations fatal:", e?.message || e);
return new Response("Internal Server Error", { status: 500 });
}
}