Add account restrictions, appeals, and admin moderation tools
This commit is contained in:
24
lib/staff-page.ts
Normal file
24
lib/staff-page.ts
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user