diff --git a/README.md b/README.md index 248ae19..e2d7aeb 100644 --- a/README.md +++ b/README.md @@ -149,13 +149,9 @@ docker compose up -d --build | `MAILPIT_UI_PORT` | `8025` | UI Mailpit per debug email | | `USER_ID` / `GROUP_ID`| `1000` | UID/GID container (match con host) | -### Primo avvio — Wizard +### Configurazione iniziale -Al primo accesso l'applicazione forza il **wizard di configurazione** in 3 step: - -1. **Nome congregazione** (visualizzato in header) -2. **Soglie**: mesi priorità (default 4), giorni rientro (default 120), retention audit log (default 365 gg) -3. **Creazione utente admin** (email + password) +La configurazione viene gestita dalla sezione **Impostazioni** (menu amministrazione), senza wizard iniziale. ### Utenti di sviluppo (DevSeeder) @@ -175,14 +171,13 @@ Al primo accesso l'applicazione forza il **wizard di configurazione** in 3 step: TerManager2/ ├── app/ │ ├── Console/Commands/ # AuditCleanup (pulizia log schedulata) -│ ├── Http/Middleware/ # SetupRequired (wizard forzato) +│ ├── Http/Middleware/ # Middleware HTTP applicativi │ ├── Livewire/ │ │ ├── Assegnazioni/ # Assegna, Rientra │ │ ├── Auth/ # Login │ │ ├── Campagne/ # Index, Create, Edit, Show │ │ ├── Proclamatori/ # Index, Create, Edit, Show, Cestino │ │ ├── Settings/ # SettingsEdit, ZoneIndex, TipologieIndex -│ │ ├── Setup/ # Wizard (3 step) │ │ ├── Territori/ # Index, Create, Edit, Show, Cestino │ │ ├── AuditLog.php # Log attività (filtri, diff) │ │ ├── Home.php # Dashboard diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 543d30c..ab68f58 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -3,8 +3,6 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; -use App\Models\Setting; -use App\Models\User; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -15,10 +13,6 @@ class LoginController extends Controller { public function __invoke(Request $request): RedirectResponse { - if (! Setting::isSetupComplete() || User::count() === 0) { - return redirect()->route('setup.index'); - } - $credentials = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required', 'string', 'min:6'], diff --git a/app/Http/Middleware/SetupRequired.php b/app/Http/Middleware/SetupRequired.php deleted file mode 100644 index 28d4b8d..0000000 --- a/app/Http/Middleware/SetupRequired.php +++ /dev/null @@ -1,24 +0,0 @@ -is('setup*') || $request->is('login') || $request->is('logout')) { - return $next($request); - } - - if (!Setting::isSetupComplete()) { - return redirect()->route('setup.index'); - } - - return $next($request); - } -} diff --git a/app/Livewire/Auth/Login.php b/app/Livewire/Auth/Login.php index 02e63d7..af2af6f 100644 --- a/app/Livewire/Auth/Login.php +++ b/app/Livewire/Auth/Login.php @@ -3,18 +3,9 @@ namespace App\Livewire\Auth; use Livewire\Component; -use App\Models\Setting; -use App\Models\User; class Login extends Component { - public function mount() - { - if (! Setting::isSetupComplete() || User::count() === 0) { - return redirect()->route('setup.index'); - } - } - public function render() { return view('livewire.auth.login') diff --git a/app/Livewire/Settings/SettingsEdit.php b/app/Livewire/Settings/SettingsEdit.php index 3fb5a4e..64bba09 100644 --- a/app/Livewire/Settings/SettingsEdit.php +++ b/app/Livewire/Settings/SettingsEdit.php @@ -8,16 +8,20 @@ use App\Models\Setting; class SettingsEdit extends Component { public string $congregazione_nome = ''; + public int $giorni_giacenza_da_assegnare = 120; public int $giorni_giacenza_prioritari = 180; public int $giorni_per_smarrito = 120; + public int $home_limit_list = 10; public int $audit_retention_days = 365; public function mount() { $settings = Setting::instance(); $this->congregazione_nome = $settings->congregazione_nome ?? ''; + $this->giorni_giacenza_da_assegnare = $settings->giorni_giacenza_da_assegnare ?? 120; $this->giorni_giacenza_prioritari = $settings->giorni_giacenza_prioritari ?? 180; $this->giorni_per_smarrito = $settings->giorni_per_smarrito ?? 120; + $this->home_limit_list = $settings->home_limit_list ?? 10; $this->audit_retention_days = $settings->audit_retention_days ?? 365; } @@ -25,8 +29,10 @@ class SettingsEdit extends Component { return [ 'congregazione_nome' => 'required|string|max:255', + 'giorni_giacenza_da_assegnare' => 'required|integer|min:1|max:730', 'giorni_giacenza_prioritari' => 'required|integer|min:1|max:730', 'giorni_per_smarrito' => 'required|integer|min:30|max:365', + 'home_limit_list' => 'required|integer|min:1|max:100', 'audit_retention_days' => 'required|integer|min:30|max:3650', ]; } @@ -38,8 +44,10 @@ class SettingsEdit extends Component $settings = Setting::instance(); $settings->update([ 'congregazione_nome' => $this->congregazione_nome, + 'giorni_giacenza_da_assegnare' => $this->giorni_giacenza_da_assegnare, 'giorni_giacenza_prioritari' => $this->giorni_giacenza_prioritari, 'giorni_per_smarrito' => $this->giorni_per_smarrito, + 'home_limit_list' => $this->home_limit_list, 'audit_retention_days' => $this->audit_retention_days, ]); diff --git a/app/Livewire/Setup/Wizard.php b/app/Livewire/Setup/Wizard.php deleted file mode 100644 index 5fd8783..0000000 --- a/app/Livewire/Setup/Wizard.php +++ /dev/null @@ -1,129 +0,0 @@ - 0) { - return redirect()->route('dashboard'); - } - - $this->needsAdmin = User::count() === 0; - - $setting = Setting::first(); - if ($setting) { - $this->congregazione_nome = $setting->congregazione_nome ?? ''; - $this->giorni_giacenza_da_assegnare = $setting->giorni_giacenza_da_assegnare; - $this->giorni_giacenza_prioritari = $setting->giorni_giacenza_prioritari; - $this->giorni_per_smarrito = $setting->giorni_per_smarrito; - $this->home_limit_list = $setting->home_limit_list; - } - } - - public function nextStep() - { - if ($this->step === 1) { - $this->validate([ - 'congregazione_nome' => 'required|string|max:255', - 'logo' => 'nullable|image|max:2048', - ]); - } - - if ($this->step === 2) { - $this->validate([ - 'giorni_giacenza_da_assegnare' => 'required|integer|min:1|max:999', - 'giorni_giacenza_prioritari' => 'required|integer|min:1|max:999', - 'giorni_per_smarrito' => 'required|integer|min:1|max:999', - 'home_limit_list' => 'required|integer|min:1|max:100', - ]); - } - - $this->step++; - } - - public function previousStep() - { - $this->step = max(1, $this->step - 1); - } - - public function finish() - { - if ($this->needsAdmin) { - $this->validate([ - 'admin_name' => 'required|string|max:255', - 'admin_email' => 'required|email|unique:users,email', - 'admin_password' => 'required|min:8|confirmed', - ]); - } - - $setting = Setting::instance(); - $setting->congregazione_nome = $this->congregazione_nome; - $setting->giorni_giacenza_da_assegnare = $this->giorni_giacenza_da_assegnare; - $setting->giorni_giacenza_prioritari = $this->giorni_giacenza_prioritari; - $setting->giorni_per_smarrito = $this->giorni_per_smarrito; - $setting->home_limit_list = $this->home_limit_list; - $setting->setup_completed = true; - - if ($this->logo) { - $path = $this->logo->store('logos', 'public'); - $setting->logo_path = $path; - } - - $setting->save(); - - if ($this->needsAdmin && $this->admin_email) { - $admin = User::create([ - 'name' => $this->admin_name, - 'email' => $this->admin_email, - 'password' => Hash::make($this->admin_password), - ]); - $admin->assignRole('amministratore'); - Auth::login($admin); - request()->session()->regenerate(); - } - - session()->flash('success', 'Setup completato con successo!'); - - if (auth()->check()) { - return redirect()->route('dashboard'); - } - - return redirect()->route('login'); - } - - public function render() - { - return view('livewire.setup.wizard') - ->layout('components.layouts.guest', ['title' => 'Setup iniziale']); - } -} diff --git a/bootstrap/app.php b/bootstrap/app.php index b2514fe..09b2543 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -15,11 +15,6 @@ return Application::configure(basePath: dirname(__DIR__)) 'role' => \Spatie\Permission\Middleware\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class, 'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class, - 'setup.required' => \App\Http\Middleware\SetupRequired::class, - ]); - - $middleware->web(append: [ - \App\Http\Middleware\SetupRequired::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { diff --git a/resources/views/livewire/settings/settings-edit.blade.php b/resources/views/livewire/settings/settings-edit.blade.php index f6d7089..85e746e 100644 --- a/resources/views/livewire/settings/settings-edit.blade.php +++ b/resources/views/livewire/settings/settings-edit.blade.php @@ -18,6 +18,13 @@ @error('congregazione_nome')
{{ $message }}
@enderror +Dopo quanti giorni dal rientro un territorio compare nella lista "da assegnare".
+ + @error('giorni_giacenza_da_assegnare'){{ $message }}
@enderror +Dopo quanti giorni dal rientro un territorio diventa prioritario automaticamente.
@@ -32,6 +39,13 @@ @error('giorni_per_smarrito'){{ $message }}
@enderrorNumero massimo di elementi mostrati nelle liste rapide in dashboard.
+ + @error('home_limit_list'){{ $message }}
@enderror +I log più vecchi di questo periodo verranno cancellati automaticamente.
diff --git a/resources/views/livewire/setup/wizard.blade.php b/resources/views/livewire/setup/wizard.blade.php deleted file mode 100644 index e0f6c6f..0000000 --- a/resources/views/livewire/setup/wizard.blade.php +++ /dev/null @@ -1,105 +0,0 @@ -Passo {{ $step }} di 3
-{{ $message }}
@enderror -{{ $message }}
@enderror -{{ $message }}
@enderror -{{ $message }}
@enderror -{{ $message }}
@enderror -{{ $message }}
@enderror -Congregazione: {{ $congregazione_nome }}
-Giacenza da assegnare: {{ $giorni_giacenza_da_assegnare }} gg
-Giacenza prioritari: {{ $giorni_giacenza_prioritari }} gg
-Soglia smarrito: {{ $giorni_per_smarrito }} gg
-Limite liste Home: {{ $home_limit_list }}
-{{ $message }}
@enderror -{{ $message }}
@enderror -{{ $message }}
@enderror -