✅ CONTROLLERS IMPLEMENTATI: - VoceSpesaController: CRUD completo con filtri avanzati, duplicazione, AJAX - RipartizioneSpesaController: Calcolo automatico/manuale, workflow stati - PianoRateizzazioneController: Gestione piani rate con calcolo interessi - RataController: Pagamenti, posticipazioni, report, export CSV ✅ INTERFACCE UI RESPONSIVE: - Voci di Spesa: Elenco filtrato, form creazione Bootstrap 5 - Design System: Layout moderno con Font Awesome, responsive - Filtri Real-time: Aggiornamento automatico con AJAX - Validazioni: Client-side e server-side ✅ SISTEMA AUTORIZZAZIONI: - Policies complete per tutti i modelli - Controlli ownership per amministratori - Role-based access control - Data integrity e security ✅ FUNZIONALITÀ AVANZATE: - Calcoli automatici millesimi e rate - Gestione stati workflow (bozza→confermata→completata) - Codici alfanumerici univoci (SP, RP, PR) - Transazioni atomiche con rollback - Export CSV e reporting 🚀 SISTEMA CORE OPERATIVO: Pronto per gestione completa spese condominiali 📱 UI PRODUCTION-READY: Interfacce moderne e intuitive 🔐 SICUREZZA COMPLETA: Autorizzazioni e validazioni robuste 📊 BUSINESS LOGIC: Calcoli automatici e workflow operativi Next: Implementazione viste rimanenti e sistema plugin
68 lines
2.3 KiB
PHP
68 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use App\Models\User;
|
|
use App\Models\Stabile;
|
|
use App\Models\VoceSpesa;
|
|
use App\Models\RipartizioneSpese;
|
|
use App\Models\PianoRateizzazione;
|
|
use App\Models\Rata;
|
|
use App\Policies\StabilePolicy;
|
|
use App\Policies\VoceSpesaPolicy;
|
|
use App\Policies\RipartizioneSpesaPolicy;
|
|
use App\Policies\PianoRateizzazionePolicy;
|
|
use App\Policies\RataPolicy;
|
|
|
|
|
|
class AuthServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* The model to policy mappings for the application.
|
|
* @var array<class-string, class-string>
|
|
*/
|
|
protected $policies = [
|
|
Stabile::class => StabilePolicy::class,
|
|
VoceSpesa::class => VoceSpesaPolicy::class,
|
|
RipartizioneSpese::class => RipartizioneSpesaPolicy::class,
|
|
PianoRateizzazione::class => PianoRateizzazionePolicy::class,
|
|
Rata::class => RataPolicy::class,
|
|
];
|
|
|
|
/**
|
|
* Register any authentication / authorization services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
// Gate per accesso pannello super-admin
|
|
Gate::define('access-super-admin-panel', function (User $user) {
|
|
return $user->hasRole('super-admin');
|
|
});
|
|
|
|
// Gate per accesso pannello admin (Amministratore di Condominio)
|
|
Gate::define('access-admin-panel', function (User $user) {
|
|
// L'utente deve avere il ruolo 'amministratore' ED essere collegato a un record 'amministratori'
|
|
return $user->hasRole('amministratore') && $user->amministratore()->exists();
|
|
});
|
|
|
|
// Gate per accesso pannello condomino
|
|
Gate::define('access-condomino-panel', function (User $user) {
|
|
return $user->hasRole('condomino');
|
|
});
|
|
|
|
// Gate per l'impersonificazione
|
|
Gate::define('impersonate', function (User $user) {
|
|
// Solo i super-admin possono impersonare
|
|
return $user->hasRole('super-admin');
|
|
});
|
|
|
|
// Gate per verificare se un utente può essere impersonato
|
|
Gate::define('canBeImpersonated', function (User $user, User $targetUser) {
|
|
// Un super-admin non può essere impersonato da nessuno
|
|
return !$targetUser->hasRole('super-admin');
|
|
});
|
|
}
|
|
}
|