# π NETGESCON - GESTIONE RUOLI E PERMESSI UTENTE **Data Creazione:** 22/07/2025 **Versione:** 1.0 **Sistema:** Layout Management + Role-Based Access Control ## π¨ PROBLEMA RISOLTO: LAYOUT MULTIPLI E CONFUSIONE ### β **SITUAZIONE PRIMA** - **β Directory multiple** con file duplicati (netgescon-laravel/, netgescon/, resources/) - **β Layout inconsistenti** (`layouts.app`, `layouts.app-universal-v2`, `admin.layouts.netgescon`) - **β Pagine che caricavano** layout sbagliati o obsoleti - **β Confusione grafica** quando si modificavano i pulsanti ### β **SITUAZIONE DOPO** - **β Directory duplicate spostate** in `_BACKUP_OLD_*_INACTIVE` - **β Layout unificato** - SOLO `admin.layouts.netgescon` - **β 31 file corretti** automaticamente - **β Sistema automatico** per prevenire regressioni future --- ## π οΈ **SISTEMA AUTOMATICO IMPLEMENTATO** ### **1. CONFIGURAZIONE CENTRALIZED** File: `/config/netgescon.php` ```php 'active_layout' => 'admin.layouts.netgescon', 'deprecated_layouts' => [ 'layouts.app-universal-v2', 'layouts.app', 'layouts.app-clean' ] ``` ### **2. MIDDLEWARE AUTOMATICO** File: `/app/Http/Middleware/NetgesconLayoutMiddleware.php` - **Applica automaticamente** il layout corretto - **Gestisce i ruoli utente** (amministratore, collaboratore, operatore, condomino) - **Condivide variabili** con tutte le viste ### **3. COMANDO PULIZIA AUTOMATICA** ```bash # Controlla cosa cambierebbe php artisan netgescon:clean-layouts --dry-run # Applica correzioni automatiche php artisan netgescon:clean-layouts # Risultato: 31 file corretti automaticamente! ``` --- ## π₯ **SISTEMA RUOLI UTENTE** ### **AMMINISTRATORE** (Accesso Completo) ```php 'amministratore' => [ 'layout' => 'admin.layouts.netgescon', 'permissions' => ['*'], // Tutti i permessi 'menus' => [ 'dashboard', 'stabili', 'palazzine', 'unita-immobiliari', 'condomini', 'contabilita', 'assemblee', 'risorse-economiche', 'affitti', 'fiscale', 'comunicazioni', 'pratiche', 'consumi', 'tickets', 'superadmin' ] ] ``` ### **COLLABORATORE** (R/W Limitato) ```php 'collaboratore' => [ 'permissions' => ['read', 'create', 'update'], // No delete 'menus' => [ 'dashboard', 'stabili' => ['read', 'create', 'update'], 'palazzine' => ['read', 'create', 'update'], 'unita-immobiliari' => ['read', 'create', 'update'], 'condomini' => ['read'], // Solo lettura 'contabilita' => ['read'], // Solo lettura 'comunicazioni' => ['read', 'create'], 'tickets' => ['read', 'create', 'update'] ] ] ``` ### **OPERATORE** (R/Create Limitato) ```php 'operatore' => [ 'permissions' => ['read', 'create'], // Solo lettura e inserimento 'menus' => [ 'dashboard', 'stabili' => ['read'], 'palazzine' => ['read'], 'unita-immobiliari' => ['read'], 'tickets' => ['read', 'create'] ] ] ``` ### **CONDOMINO** (Solo Lettura Personale) ```php 'condomino' => [ 'layout' => 'condomino.layout', // Layout diverso 'permissions' => ['read'], 'menus' => [ 'dashboard', 'my-unita' => ['read'], // Solo la sua unitΓ 'documenti' => ['read'], 'comunicazioni' => ['read'], 'contabilita' => ['read'] // Solo la sua quota ] ] ``` --- ## π― **IMPLEMENTAZIONE NEI TEMPLATE** ### **USO NELLE VISTE BLADE** ```blade @extends($activeLayout ?? 'admin.layouts.netgescon') {{-- Controllo permessi --}} @if(in_array('create', $userPermissions ?? [])) Nuovo Stabile @endif {{-- Menu condizionale --}} @if(isset($userMenus['superadmin']))