Files
MineGeo/lib/staff-page.ts

25 lines
755 B
TypeScript

import "server-only";
import { notFound, redirect } from "next/navigation";
import { admin, required, user } from "./supabase";
import { canReviewMaps, isAdministrator } from "@/shared/permissions";
export async function staffPage(adminOnly = false) {
const account = await user();
const destination = adminOnly ? "/admin" : "/moderation";
if (!account) redirect("/log-in?next=" + encodeURIComponent(destination));
const profile = required(
await admin()
.from("profiles")
.select("role,account_status")
.eq("id", account.id)
.single(),
);
if (
profile.account_status !== "active" ||
!canReviewMaps(profile.role) ||
(adminOnly && !isAdministrator(profile.role))
)
notFound();
return profile;
}