['*'], // Accesso completo 'admin' => [ 'dashboard', 'stabili', 'condomini', 'contabilita', 'fiscale', 'assemblee', 'risorse-economiche', 'comunicazioni', 'affitti', 'pratiche', 'consumi', 'tickets', 'impostazioni', 'utenti' ], 'amministratore' => [ 'dashboard', 'stabili', 'condomini', 'contabilita', 'fiscale', 'assemblee', 'risorse-economiche', 'comunicazioni', 'affitti', 'pratiche', 'consumi', 'tickets' ], 'collaboratore' => [ 'dashboard', 'stabili', 'condomini', 'contabilita', 'comunicazioni', 'tickets', 'pratiche' ], 'ragioniere' => [ 'dashboard', 'contabilita', 'fiscale', 'risorse-economiche', 'comunicazioni', 'tickets' ], 'condomino' => [ 'dashboard', 'comunicazioni', 'tickets' ], 'guest' => [] ]; // Super admin ha accesso a tutto if ($userRole === 'super_admin') { return true; } // Verifica permessi specifici $userPermissions = $permissions[$userRole] ?? []; return in_array($menuSection, $userPermissions); } /** * Wrapper per controllare multiple sezioni */ public static function canUserAccessAnyMenu($menuSections, $userRole = null) { if (!is_array($menuSections)) { $menuSections = [$menuSections]; } foreach ($menuSections as $section) { if (self::canUserAccessMenu($section, $userRole)) { return true; } } return false; } /** * Ottiene il ruolo utente corrente */ public static function getCurrentUserRole() { if (Auth::check()) { return Auth::user()->role ?? 'amministratore'; // Default per test } return 'guest'; } /** * Verifica se l'utente ha un ruolo specifico o superiore */ public static function hasMinimumRole($requiredRole, $userRole = null) { $userRole = $userRole ?? self::getCurrentUserRole(); $roleHierarchy = [ 'guest' => 0, 'condomino' => 1, 'collaboratore' => 2, 'ragioniere' => 2, 'amministratore' => 3, 'admin' => 4, 'super_admin' => 5 ]; $userLevel = $roleHierarchy[$userRole] ?? 0; $requiredLevel = $roleHierarchy[$requiredRole] ?? 999; return $userLevel >= $requiredLevel; } }