fix(admin): housekeeping TS returns + clearer permissions UX
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m50s

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-22 21:39:01 +02:00
1 parent 75cace41ea
commit ce6e8235cc
5 files changed
+45 -42

No files matched your search

+10 -7
View File
@@ -11,21 +11,24 @@ import { prisma } from "@/lib/prisma";
*/
async function rejectLegacyHousekeepingWrite(): Promise<never> {
await requirePermission(PERMS.SETTINGS_EDIT);
redirectSafe("/admin/permissions?from=housekeeping", "/admin/permissions");
return redirectSafe(
"/admin/permissions?from=housekeeping",
"/admin/permissions",
);
}
export async function upsertPermission(_formData: FormData): Promise<void> {
await rejectLegacyHousekeepingWrite();
return rejectLegacyHousekeepingWrite();
}
export async function deletePermission(_formData: FormData): Promise<void> {
await rejectLegacyHousekeepingWrite();
return rejectLegacyHousekeepingWrite();
}
export async function bulkImportPermissions(
_formData: FormData,
): Promise<{ count: number; errors: string[] }> {
await rejectLegacyHousekeepingWrite();
return rejectLegacyHousekeepingWrite();
}
export async function exportPermissions(): Promise<string> {
@@ -46,15 +49,15 @@ export async function exportPermissions(): Promise<string> {
}
export async function applyPreset(_formData: FormData): Promise<void> {
await rejectLegacyHousekeepingWrite();
return rejectLegacyHousekeepingWrite();
}
export async function clearAllPermissions(): Promise<void> {
await rejectLegacyHousekeepingWrite();
return rejectLegacyHousekeepingWrite();
}
export async function bulkDeletePermissions(
_ids: bigint[],
): Promise<{ count: number }> {
await rejectLegacyHousekeepingWrite();
return rejectLegacyHousekeepingWrite();
}
@@ -107,18 +107,18 @@ export function PermissionsList({
className="rounded-lg border border-[var(--admin-warning-border)] bg-[var(--admin-warning-subtle)] px-4 py-3 text-sm"
role="status"
>
Housekeeping writes are retired. Edit live ACL ranks and permissions
here.
You were sent here from the permission archive. Edit rank access
below — this is the live control panel.
</div>
) : null}
<div
className="rounded-lg border border-[var(--admin-info-border)] bg-[var(--admin-info-subtle)] px-4 py-3 text-sm text-[var(--admin-text)]"
role="status"
>
<p className="m-0 font-semibold">Live ACL</p>
<p className="m-0 font-semibold">Live access control</p>
<p className="m-0 mt-1 text-muted-foreground">
Rank ACL here controls real admin and mod access. The Housekeeping
table is a read-only legacy archive with an ACL compare view.
Changes here decide who can open admin and mod pages. The permission
archive is only for compare/export.
</p>
</div>
+10 -10
View File
@@ -1086,7 +1086,7 @@
"backToSite": "Back to site",
"expandAll": "Expand all",
"collapseAll": "Collapse all",
"housekeeping": "Housekeeping (legacy)",
"housekeeping": "Permission archive",
"hotelManagementPanel": "Hotel management panel",
"rankLabel": "Rank {rank}",
"community": "Community",
@@ -1657,7 +1657,7 @@
},
"permissions": {
"title": "Permissions",
"subtitle": "Manage live ACL ranks and role permissions for admin and mod panels",
"subtitle": "This is the live access control for admin and mod panels",
"addPermission": "Add permission",
"editPermission": "Edit permission",
"deletePermission": "Delete permission",
@@ -2538,7 +2538,7 @@
"favicon": "Favicon",
"emulator": "Emulator",
"email": "Email",
"housekeeping": "Housekeeping (legacy)",
"housekeeping": "Permission archive",
"commando": "Commando",
"rooms": "Rooms",
"import": "Import",
@@ -2561,7 +2561,7 @@
"tickets": "Support desk",
"ticketsSubtitle": "CMS tickets, help-center tickets, and reply templates",
"staffAccess": "Ranks & permissions",
"staffAccessSubtitle": "Staff ranks and live ACL. Housekeeping is legacy reference only.",
"staffAccessSubtitle": "Staff ranks and live access. Archive is compare/export only.",
"analytics": "Analytics",
"analyticsSubtitle": "Hotel activity, retention and economy",
"devops": "DevOps",
@@ -2612,8 +2612,8 @@
"confirmDisable": "Disable maintenance mode and restore access for all users?"
},
"housekeeping": {
"title": "Housekeeping (legacy)",
"subtitle": "Legacy min-rank table — not used by live ACL checks. Manage real access under Permissions.",
"title": "Permission archive",
"subtitle": "Old backup table. Real access is managed under Permissions — this page is compare + export only.",
"addPermission": "Add permission",
"editPermission": "Edit permission",
"deletePermission": "Delete permission",
@@ -2724,10 +2724,10 @@
"auditTarget": "Target",
"save": "Save",
"importTitle": "Import permissions",
"legacyBannerTitle": "This table is not live ACL",
"legacyBannerBody": "Runtime access uses the ACL permissions system. Use Housekeeping only as a legacy reference.",
"legacyBannerCta": "Open live Permissions",
"writesRetired": "Create/edit/import/presets on this table are disabled. Change live access under Permissions.",
"legacyBannerTitle": "Use Permissions to change who can do what",
"legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.",
"legacyBannerCta": "Open Permissions",
"writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.",
"tabCompare": "ACL compare",
"tabExportOnly": "Export archive",
"compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).",
+10 -10
View File
@@ -1019,7 +1019,7 @@
"devops": "DevOps",
"wordFilter": "Filtro parole",
"maintenance": "Manutenzione",
"housekeeping": "Housekeeping (legacy)",
"housekeeping": "Archivio permessi",
"rooms": "Stanze",
"emailTemplates": "Template email",
"theme": "Tema",
@@ -1613,7 +1613,7 @@
},
"permissions": {
"title": "Permessi",
"subtitle": "Gestisci gradi e permessi ACL live per pannelli admin e mod",
"subtitle": "Questo e il controllo accessi live per pannelli admin e mod",
"addPermission": "Aggiungi permesso",
"editPermission": "Modifica permesso",
"deletePermission": "Elimina permesso",
@@ -2459,8 +2459,8 @@
"confirmDisable": "Disattivare la modalità manutenzione e ripristinare l'accesso per tutti gli utenti?"
},
"housekeeping": {
"title": "Housekeeping (legacy)",
"subtitle": "Tabella min-rank legacy — non usata dai controlli ACL attivi. Gestisci l'accesso reale in Permessi.",
"title": "Archivio permessi",
"subtitle": "Vecchia tabella di backup. L'accesso reale si gestisce in Permessi — qui solo confronto ed export.",
"addPermission": "Aggiungi permesso",
"editPermission": "Modifica permesso",
"deletePermission": "Elimina permesso",
@@ -2571,10 +2571,10 @@
"selectAllMatching": "Select all {count} matching",
"save": "Save",
"importTitle": "Import permissions",
"legacyBannerTitle": "Questa tabella non e ACL live",
"legacyBannerBody": "L'accesso runtime usa il sistema ACL. Usa Housekeeping solo come riferimento legacy.",
"legacyBannerCta": "Apri Permessi live",
"writesRetired": "Create/modifica/import/preset su questa tabella sono disabilitati. Cambia l'accesso live in Permessi.",
"legacyBannerTitle": "Per cambiare chi puo fare cosa usa Permessi",
"legacyBannerBody": "Questo archivio non controlla il sito. Apri Permessi per dare o togliere accesso ai gradi.",
"legacyBannerCta": "Apri Permessi",
"writesRetired": "Qui non si modifica piu nulla di proposito. Cambia l'accesso solo in Permessi.",
"tabCompare": "Confronto ACL",
"tabExportOnly": "Esporta archivio",
"compareHint": "Confronta le righe legacy housekeeping con i grant ACL live rank_* (grado minimo con lo slug).",
@@ -2790,7 +2790,7 @@
"favicon": "Favicon",
"emulator": "Emulator",
"email": "Email",
"housekeeping": "Housekeeping (legacy)",
"housekeeping": "Archivio permessi",
"commando": "Commando",
"rooms": "Stanze",
"import": "Import",
@@ -2813,7 +2813,7 @@
"tickets": "Assistenza",
"ticketsSubtitle": "Ticket CMS, ticket centro assistenza e template risposte",
"staffAccess": "Gradi e permessi",
"staffAccessSubtitle": "Gradi staff e ACL live. Housekeeping e solo riferimento legacy.",
"staffAccessSubtitle": "Gradi staff e accesso live. L'archivio e solo confronto/export.",
"analytics": "Analitiche",
"analyticsSubtitle": "Attività hotel, retention ed economia",
"devops": "DevOps",
+10 -10
View File
@@ -1077,7 +1077,7 @@
"backToSite": "Terug naar site",
"expandAll": "Alles openen",
"collapseAll": "Alles sluiten",
"housekeeping": "Housekeeping (legacy)",
"housekeeping": "Permissie-archief",
"hotelManagementPanel": "Hotelbeheerpaneel",
"rankLabel": "Rang {rank}",
"hubNewsMedia": "News & media",
@@ -1589,7 +1589,7 @@
},
"permissions": {
"title": "Permissies",
"subtitle": "Beheer live ACL-rangen en rolrechten voor admin- en mod-panelen",
"subtitle": "Dit is de live toegangscontrole voor admin- en mod-panelen",
"addPermission": "Permissie toevoegen",
"editPermission": "Permissie bewerken",
"deletePermission": "Permissie verwijderen",
@@ -2434,8 +2434,8 @@
"confirmDisable": "Onderhoudsmodus uitschakelen en toegang herstellen voor alle gebruikers?"
},
"housekeeping": {
"title": "Housekeeping (legacy)",
"subtitle": "Legacy min-rank tabel — niet gebruikt door live ACL. Beheer echte toegang via Permissions.",
"title": "Permissie-archief",
"subtitle": "Oude back-uptabel. Echte toegang beheert u onder Permissions — hier alleen vergelijken en exporteren.",
"addPermission": "Permissie toevoegen",
"editPermission": "Permissie bewerken",
"deletePermission": "Permissie verwijderen",
@@ -2546,10 +2546,10 @@
"auditTarget": "Doel",
"save": "Opslaan",
"importTitle": "Permissies importeren",
"legacyBannerTitle": "Deze tabel is geen live ACL",
"legacyBannerBody": "Runtime-toegang gebruikt het ACL-systeem. Gebruik Housekeeping alleen als legacy-referentie.",
"legacyBannerCta": "Open live Permissions",
"writesRetired": "Aanmaken/bewerken/import/presets op deze tabel zijn uitgeschakeld. Wijzig live toegang onder Permissions.",
"legacyBannerTitle": "Gebruik Permissions om te bepalen wie wat mag",
"legacyBannerBody": "Dit archief bestuurt de site niet. Open Permissions om toegang voor rangen te geven of in te trekken.",
"legacyBannerCta": "Open Permissions",
"writesRetired": "Bewerken hier is expres uitgeschakeld. Wijzig toegang alleen in Permissions.",
"tabCompare": "ACL vergelijking",
"tabExportOnly": "Exporteer archief",
"compareHint": "Vergelijkt legacy housekeeping min-rank rijen met live ACL rank_* grants (laagste rang met de slug).",
@@ -2856,7 +2856,7 @@
"favicon": "Favicon",
"emulator": "Emulator",
"email": "E-mail",
"housekeeping": "Housekeeping (legacy)",
"housekeeping": "Permissie-archief",
"commando": "Commando",
"rooms": "Kamers",
"import": "Import",
@@ -2879,7 +2879,7 @@
"tickets": "Supportbalie",
"ticketsSubtitle": "CMS-tickets, helpcentrum-tickets en antwoordtemplates",
"staffAccess": "Rangen & rechten",
"staffAccessSubtitle": "Staffrangen en live ACL. Housekeeping is alleen legacy-referentie.",
"staffAccessSubtitle": "Staffrangen en live toegang. Archief is alleen vergelijken/exporteren.",
"analytics": "Analytics",
"analyticsSubtitle": "Hotelactiviteit, retentie en economie",
"devops": "DevOps",