# πŸ” 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'])) @endif ``` ### **CONTROLLER AUTOMÁTICO** ```php // Il middleware automaticamente fornisce: // $userRole, $userPermissions, $userMenus, $activeLayout public function index() { // I permessi sono giΓ  verificati dal middleware $stabili = Stabile::all(); return view('admin.stabili.index', compact('stabili')); } ``` --- ## πŸ”§ **MANUTENZIONE E PREVENZIONE** ### **COMANDI UTILI** ```bash # Controlla stato layout php artisan netgescon:clean-layouts --dry-run # Pulizia automatica (da eseguire dopo modifiche) php artisan netgescon:clean-layouts # Pulizia cache completa php artisan view:clear && php artisan config:clear && php artisan route:clear ``` ### **DIRECTORY INATTIVE** ``` _BACKUP_OLD_netgescon-laravel_INACTIVE/ ← Directory resa inattiva _BACKUP_OLD_netgescon_INACTIVE/ ← Directory resa inattiva resources/views/ ← UNICA DIRECTORY ATTIVA ``` ### **FILE DA NON TOCCARE** - `/config/netgescon.php` - Configurazione ruoli e layout - `/app/Http/Middleware/NetgesconLayoutMiddleware.php` - Middleware automatico - `/app/Console/Commands/CleanDeprecatedLayouts.php` - Comando pulizia --- ## πŸŽ‰ **RISULTATI FINALI** ### βœ… **LAYOUT UNIFICATO** - **31 file corretti** automaticamente - **Layout consistente** in tutte le pagine - **Logout funzionale** ovunque con header blu ### βœ… **SISTEMA RUOLI** - **4 tipi utente** configurati (admin, collaboratore, operatore, condomino) - **Permessi granulari** (R/W per sezione) - **Menu condizionali** basati su ruolo ### βœ… **PREVENZIONE FUTURA** - **Middleware automatico** applica layout corretto - **Comando pulizia** per correzioni massive - **Directory backup inattive** per evitare confusione ### βœ… **PRONTO PER** - **Personalizzazione accessi** per ruolo utente - **Layout specifici** per tipologia utente - **ScalabilitΓ  futura** con nuovi ruoli --- ## πŸ“‹ **WORKFLOW FUTURO** ### **QUANDO AGGIUNGI UNA NUOVA PAGINA** 1. Usa sempre `@extends('admin.layouts.netgescon')` 2. Implementa controlli permessi con `$userPermissions` 3. Testa con diversi ruoli utente 4. Esegui `php artisan netgescon:clean-layouts --dry-run` ### **QUANDO MODIFICHI LAYOUT** 1. Modifica SOLO `/resources/views/admin/layouts/netgescon.blade.php` 2. Testa logout e navigazione 3. Pulisci cache: `php artisan view:clear` 4. Verifica funzionamento su tutte le pagine principali ### **QUANDO AGGIUNGI RUOLI** 1. Configura in `/config/netgescon.php` 2. Aggiorna middleware se necessario 3. Testa accesso condizionale ai menu 4. Documenta nuovi permessi --- **πŸš€ SISTEMA COMPLETAMENTE AUTOMATIZZATO E PRONTO PER LA PRODUZIONE!** πŸš€