Eliminato Wizard, tutto verrà gestito da impostazioni
This commit is contained in:
@@ -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'],
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use App\Models\Setting;
|
||||
|
||||
class SetupRequired
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if ($request->is('setup*') || $request->is('login') || $request->is('logout')) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
if (!Setting::isSetupComplete()) {
|
||||
return redirect()->route('setup.index');
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
@@ -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')
|
||||
|
||||
@@ -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,
|
||||
]);
|
||||
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Livewire\Setup;
|
||||
|
||||
use Livewire\Component;
|
||||
use Livewire\WithFileUploads;
|
||||
use App\Models\Setting;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class Wizard extends Component
|
||||
{
|
||||
use WithFileUploads;
|
||||
|
||||
public int $step = 1;
|
||||
|
||||
// Step 1
|
||||
public string $congregazione_nome = '';
|
||||
public $logo;
|
||||
|
||||
// Step 2
|
||||
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;
|
||||
|
||||
// Step 3 (admin creation if no users)
|
||||
public string $admin_name = '';
|
||||
public string $admin_email = '';
|
||||
public string $admin_password = '';
|
||||
public string $admin_password_confirmation = '';
|
||||
public bool $needsAdmin = false;
|
||||
|
||||
public function mount()
|
||||
{
|
||||
if (Setting::isSetupComplete() && User::count() > 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']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user