Finish fine-grained ACL across remaining admin pages and actions.
Local Build and Deploy / deploy (push) Successful in 56s

Replace leftover requireStaff gates with module PERMS, drop hardcoded room rank thresholds, and expand contract tests so admin mutations cannot regress to dashboard-only checks.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-15 20:15:22 +02:00
1 parent 3c8a8ff888
commit 0e89d03940
63 files changed
+420 -163

No files matched your search

+1 -1
View File
@@ -84,7 +84,7 @@ export default async function RoomFurniPage({
ownerUsername: room.owner?.username ?? room.ownerName,
}}
items={rows}
canEdit={session.user.rank >= 4}
canEdit={canAccess(permissions, PERMS.ROOMS_EDIT, session.user.rank)}
/>
</div>
);
+1 -4
View File
@@ -15,10 +15,7 @@ export default async function RoomEditPage({
}) {
const { id } = await params;
const { session, permissions } = await getAdminContext();
if (
!canAccess(permissions, PERMS.ROOMS_VIEW, session.user.rank) ||
session.user.rank < 4
) {
if (!canAccess(permissions, PERMS.ROOMS_EDIT, session.user.rank)) {
redirect("/admin");
}
+1 -3
View File
@@ -30,9 +30,7 @@ export default async function RoomsPage({
searchParams,
);
const canEdit =
canAccess(result.permissions, PERMS.ROOMS_VIEW, result.rank) &&
result.rank >= 4;
const canEdit = canAccess(result.permissions, PERMS.ROOMS_EDIT, result.rank);
return (
<div className="space-y-6">
+1 -1
View File
@@ -29,7 +29,7 @@ export default async function RoomShowPage({
redirect("/admin");
const room = await loadRoom(id);
const canEdit = session.user.rank >= 4;
const canEdit = canAccess(permissions, PERMS.ROOMS_EDIT, session.user.rank);
return (
<div className="space-y-6">