Permessi per ruolo
Cosa può vedere e fare ogni ruolo. Tutto ciò che non è concesso è negato, anche lato server.
Matrice permessi
Buyer: 6 su 15 permessi
Come viene applicato
- Interfaccia: legge la stessa matrice per nascondere colonne e disabilitare azioni.
- Server: le API rifiltrano costo e margine e rispondono 403 alle azioni non autorizzate.
- In produzione: il ruolo arriva dalla sessione firmata, mai dal client.
// src/lib/rbac.ts — matrice deny-by-default
export function can(role: Role, permission: Permission): boolean {
return ROLE_PERMISSIONS[role].has(permission);
}
// Route Handler: la verifica è ripetuta lato server
if (!can(session.role, "order:submit")) {
return apiError(403, "forbidden", "...", "order:submit");
}