Add account restrictions, appeals, and admin moderation tools

This commit is contained in:
2026-10-13 12:32:37 +05:00
parent 018be5049e
commit cfe5820802
28 changed files with 1936 additions and 125 deletions

24
lib/staff-page.ts Normal file
View File

@@ -0,0 +1,24 @@
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;
}