netgescon-master/_BACKUP_OLD_netgescon-laravel_INACTIVE/app/Helpers/MenuHelper.php

106 lines
3.1 KiB
PHP

<?php
namespace App\Helpers;
use Illuminate\Support\Facades\Auth;
class MenuHelper
{
/**
* Verifica se l'utente può accedere a una specifica sezione del menu
*/
public static function canUserAccessMenu($menuSection, $userRole = null)
{
// Se non specificato, prende il ruolo dall'utente autenticato
$userRole = $userRole ?? self::getCurrentUserRole();
// Definizione permessi per ogni ruolo
$permissions = [
'super_admin' => ['*'], // 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;
}
}