sistemazione reports - cambio password - profilo utente

This commit is contained in:
2026-05-27 10:45:05 +02:00
parent fefc3bba2a
commit 3471befb1a
26 changed files with 1964 additions and 632 deletions
+54 -61
View File
@@ -4,11 +4,14 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\ActivityLog;
use App\Models\EmailSetting;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Validation\ValidationException;
use Symfony\Component\Mime\Address;
class AuthController extends Controller
{
@@ -32,11 +35,9 @@ class AuthController extends Controller
]);
}
if (Auth::attempt($credentials)) {
if (Auth::attempt($credentials, $request->has('remember'))) {
$request->session()->regenerate();
ActivityLog::logLogin();
return redirect()->intended('/dashboard');
}
@@ -45,63 +46,6 @@ class AuthController extends Controller
]);
}
public function showRegisterForm()
{
return view('auth.register');
}
public function register(Request $request)
{
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
$isFirstUser = User::count() === 0;
$defaultPermissions = [
'individui' => 1,
'gruppi' => 1,
'eventi' => 1,
'documenti' => 1,
'mailing' => 1,
'viste' => 1,
'report' => 0,
'settings' => 0,
];
if ($isFirstUser) {
$defaultPermissions = [
'individui' => 2,
'gruppi' => 2,
'eventi' => 2,
'documenti' => 2,
'mailing' => 2,
'viste' => 2,
'report' => 0,
'settings' => 0,
];
}
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'is_admin' => $isFirstUser,
'status' => User::STATUS_ACTIVE,
'permissions' => $defaultPermissions,
]);
ActivityLog::log('create', 'utenti', 'Registrato nuovo utente: ' . $user->name, [
'user_id' => $user->id,
]);
Auth::login($user);
return redirect('/dashboard');
}
public function logout(Request $request)
{
Auth::logout();
@@ -109,4 +53,53 @@ class AuthController extends Controller
$request->session()->regenerateToken();
return redirect('/');
}
}
public function showForgotForm()
{
return view('auth.forgot-password');
}
public function sendResetLink(Request $request)
{
$request->validate(['email' => 'required|email']);
$user = User::where('email', $request->email)->first();
if (!$user) {
return back()->withErrors(['email' => 'Nessun account trovato con questa email.']);
}
$token = Password::broker()->createToken($user);
$user->sendPasswordResetNotification($token);
return back()->with('success', 'Ti abbiamo inviato un link per il reset della password via email.');
}
public function showResetForm(string $token)
{
return view('auth.reset-password', ['token' => $token]);
}
public function reset(Request $request)
{
$request->validate([
'token' => 'required',
'email' => 'required|email',
'password' => 'required|string|min:8|confirmed',
]);
$status = Password::broker()->reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function (User $user, string $password) {
$user->forceFill([
'password' => Hash::make($password),
])->save();
}
);
if ($status === Password::PASSWORD_RESET) {
return redirect()->route('login')->with('success', 'Password reimpostata con successo. Accedi con la nuova password.');
}
return back()->withErrors(['email' => [__($status)]]);
}
}