fix(admin): P0 integrity — permanent bans, ACL sidebar, rank guards
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m36s

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-22 19:01:59 +02:00
1 parent 11004626c7
commit 75cdfdebe4
14 files changed
+458 -68

No files matched your search

+13 -1
View File
@@ -10,7 +10,9 @@ import { AdminTopbar } from "@/components/admin/admin-topbar";
import { LanguageSwitcher } from "@/components/language-switcher";
import { ThemeSwitcher } from "@/components/theme-switcher";
import { requireStaff } from "@/lib/admin/guard";
import { collectNavPermissionSlugs } from "@/lib/admin-nav";
import { setCsrfCookie } from "@/lib/foundation/security";
import { canAccess, getAdminContext } from "@/lib/permissions";
import { prisma } from "@/lib/prisma";
import { siteSettings } from "@/lib/services/site-settings";
@@ -66,6 +68,13 @@ async function Sidebar({
}) {
const t = await getTranslations("pages.admin.nav");
const initial = staff.username.charAt(0).toUpperCase();
const { permissions } = await getAdminContext();
const isSuperAdmin = permissions.isSuperAdmin;
const allowedPermissions = isSuperAdmin
? []
: collectNavPermissionSlugs().filter((slug) =>
canAccess(permissions, slug, staff.rank),
);
return (
<aside
@@ -93,7 +102,10 @@ async function Sidebar({
</div>
</div>
<AdminSidebarNav />
<AdminSidebarNav
allowedPermissions={allowedPermissions}
isSuperAdmin={isSuperAdmin}
/>
<div className="shrink-0 border-t border-[var(--admin-border)] px-3 py-3">
<Link