6.5 KiB
6.5 KiB
🔐 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
'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
# 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)
'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)
'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)
'operatore' => [
'permissions' => ['read', 'create'], // Solo lettura e inserimento
'menus' => [
'dashboard',
'stabili' => ['read'],
'palazzine' => ['read'],
'unita-immobiliari' => ['read'],
'tickets' => ['read', 'create']
]
]
CONDOMINO (Solo Lettura Personale)
'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
@extends($activeLayout ?? 'admin.layouts.netgescon')
{{-- Controllo permessi --}}
@if(in_array('create', $userPermissions ?? []))
<a href="{{ route('admin.stabili.create') }}" class="btn btn-primary">
<i class="fas fa-plus"></i> Nuovo Stabile
</a>
@endif
{{-- Menu condizionale --}}
@if(isset($userMenus['superadmin']))
<li class="nav-item">
<a class="nav-link" href="{{ route('superadmin.dashboard') }}">
<i class="fas fa-cog"></i> Configurazione Sistema
</a>
</li>
@endif
CONTROLLER AUTOMÁTICO
// 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
# 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
- Usa sempre
@extends('admin.layouts.netgescon') - Implementa controlli permessi con
$userPermissions - Testa con diversi ruoli utente
- Esegui
php artisan netgescon:clean-layouts --dry-run
QUANDO MODIFICHI LAYOUT
- Modifica SOLO
/resources/views/admin/layouts/netgescon.blade.php - Testa logout e navigazione
- Pulisci cache:
php artisan view:clear - Verifica funzionamento su tutte le pagine principali
QUANDO AGGIUNGI RUOLI
- Configura in
/config/netgescon.php - Aggiorna middleware se necessario
- Testa accesso condizionale ai menu
- Documenta nuovi permessi
🚀 SISTEMA COMPLETAMENTE AUTOMATIZZATO E PRONTO PER LA PRODUZIONE! 🚀