Files
Jyotisha/frontend/src/lib/supabase/admin.ts
T

40 lines
1.0 KiB
TypeScript

import "server-only";
import { queryAdminRows } from "@/lib/admin/database";
import {
createAdminSupabaseClient,
isAdminEmail,
} from "./admin-client-core";
export { createAdminSupabaseClient, isAdminEmail };
export async function isAdminUser(user: { id?: string; email?: string | null }) {
if (process.env.AUTH_PROVIDER?.trim() === "self-hosted") {
if (!user.id) return false;
try {
const rows = await queryAdminRows<{ allowed: boolean }>(
"select public.admin_has_permission($1, 'admin.access') as allowed",
[user.id],
);
return rows[0]?.allowed ?? false;
} catch {
return false;
}
}
if (isAdminEmail(user.email)) return true;
if (!user.id) return false;
try {
const admin = createAdminSupabaseClient();
const { data, error } = await admin
.from("admin_users")
.select("user_id")
.eq("user_id", user.id)
.is("revoked_at", null)
.maybeSingle();
return !error && Boolean(data);
} catch {
return false;
}
}