magricambi/src/lib/permissions.ts

73 lines
2 KiB
TypeScript
Raw Normal View History

2026-05-31 17:41:45 +02:00
import type { UserRole } from "@/src/types/user";
/** Ruoli canonici in italiano (valori consigliati in DB). */
export const USER_ROLES: UserRole[] = ["amministratore", "tecnico", "operatore"];
/** Mappatura ruoli legacy → ruoli attuali. */
const LEGACY_ROLE_MAP: Record<string, UserRole> = {
admin: "amministratore",
sviluppo: "amministratore",
manager: "tecnico",
user: "operatore",
amministratore: "amministratore",
tecnico: "tecnico",
operatore: "operatore",
};
export const ROLE_LABELS: Record<UserRole, string> = {
amministratore: "Amministratore",
tecnico: "Tecnico",
operatore: "Operatore",
};
export function isUserRole(value: string): value is UserRole {
return USER_ROLES.includes(value as UserRole);
}
export function normalizeRole(value: string): UserRole | null {
const key = value.trim().toLowerCase();
const mapped = LEGACY_ROLE_MAP[key];
return mapped ?? null;
}
export interface AppPermissions {
canManageUtenti: boolean;
canManageStabilimenti: boolean;
canScaricoArticoli: boolean;
canAssegnaArticoliMacchina: boolean;
canEditMacchine: boolean;
canRemoveArticoloMacchina: boolean;
}
export function getPermissions(ruolo: UserRole): AppPermissions {
switch (ruolo) {
case "amministratore":
return {
canManageUtenti: true,
canManageStabilimenti: true,
canScaricoArticoli: true,
canAssegnaArticoliMacchina: true,
canEditMacchine: true,
canRemoveArticoloMacchina: true,
};
case "tecnico":
return {
canManageUtenti: false,
canManageStabilimenti: false,
canScaricoArticoli: true,
canAssegnaArticoliMacchina: true,
canEditMacchine: true,
canRemoveArticoloMacchina: true,
};
case "operatore":
return {
canManageUtenti: false,
canManageStabilimenti: false,
canScaricoArticoli: false,
canAssegnaArticoliMacchina: false,
canEditMacchine: false,
canRemoveArticoloMacchina: false,
};
}
}