25 lines
755 B
TypeScript
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;
|
|
}
|