diff --git a/app/Http/Controllers/Web/Auth/LoginController.php b/app/Http/Controllers/Web/Auth/LoginController.php index 5cfd769..7f60e66 100644 --- a/app/Http/Controllers/Web/Auth/LoginController.php +++ b/app/Http/Controllers/Web/Auth/LoginController.php @@ -111,6 +111,14 @@ class LoginController extends Controller return redirect()->to('userarea/production_dashboard.php'); } elseif ($user->hasRole('User')) { return redirect()->to('userarea/production_dashboard.php'); + } elseif ($user->hasRole('HR')) { + return redirect()->to('userarea/production_dashboard.php'); + } elseif ($user->hasRole('SuperUser')) { + return redirect()->to('userarea/production_dashboard.php'); + } elseif ($user->hasRole('Management')) { + return redirect()->to('userarea/production_dashboard.php'); + } elseif ($user->hasRole('Quality')) { + return redirect()->to('userarea/production_dashboard.php'); } // Se il ruolo non è specificato, reindirizza alla home predefinita diff --git a/public/userarea/include/topbar.php b/public/userarea/include/topbar.php index 4d54919..735cf14 100644 --- a/public/userarea/include/topbar.php +++ b/public/userarea/include/topbar.php @@ -100,7 +100,7 @@
+ $avatarToSave = $fileName;
+ }
+ }
+ }
+ }
+ }
+
+ $passwordToSave = null;
+ $wantsPasswordChange = ($currentPassword !== '' || $newPassword !== '' || $confirmPassword !== '');
+
+ if (!$errorMessage && $wantsPasswordChange) {
+ if ($currentPassword === '') {
+ $errorMessage = 'Inserisci la password attuale.';
+ } elseif ($newPassword === '') {
+ $errorMessage = 'Inserisci la nuova password.';
+ } elseif (strlen($newPassword) < 8) {
+ $errorMessage = 'La nuova password deve contenere almeno 8 caratteri.';
+ } elseif ($newPassword !== $confirmPassword) {
+ $errorMessage = 'La conferma password non corrisponde.';
+ } elseif (!password_verify($currentPassword, $profileUser['password'])) {
+ $errorMessage = 'La password attuale non è corretta.';
+ } else {
+ // Password is encrypted before saving.
+ $passwordToSave = password_hash($newPassword, PASSWORD_DEFAULT);
+ }
+ }
+
+ if (!$errorMessage) {
+ try {
+ $pdo->beginTransaction();
+
+ $stmtUpdate = $pdo->prepare("
+ UPDATE auth_users
+ SET
+ email = :email,
+ first_name = :first_name,
+ last_name = :last_name,
+ phone = :phone,
+ avatar = :avatar,
+ address = :address,
+ country_id = :country_id,
+ birthday = :birthday,
+ updated_at = NOW()
+ WHERE id = :id
+ LIMIT 1
+ ");
+
+ $stmtUpdate->execute([
+ ':email' => $email,
+ ':first_name' => $firstName !== '' ? $firstName : null,
+ ':last_name' => $lastName !== '' ? $lastName : null,
+ ':phone' => $phone !== '' ? $phone : null,
+ ':avatar' => $avatarToSave !== '' ? $avatarToSave : null,
+ ':address' => $address !== '' ? $address : null,
+ ':country_id' => $countryId,
+ ':birthday' => $birthdayValue,
+ ':id' => $userId,
+ ]);
+
+ if ($passwordToSave !== null) {
+ $stmtPassword = $pdo->prepare("
+ UPDATE auth_users
+ SET password = ?, updated_at = NOW()
+ WHERE id = ?
+ LIMIT 1
+ ");
+ $stmtPassword->execute([$passwordToSave, $userId]);
+ }
+
+ $pdo->commit();
+
+ $successMessage = $passwordToSave !== null
+ ? 'Profilo, avatar e password aggiornati correttamente.'
+ : 'Profilo aggiornato correttamente.';
+
+ // Reload updated user.
+ $stmtProfileUser->execute([$userId]);
+ $profileUser = $stmtProfileUser->fetch(PDO::FETCH_ASSOC);
+
+ $_SESSION['user_settings_csrf'] = bin2hex(random_bytes(32));
+ $csrfToken = $_SESSION['user_settings_csrf'];
+ } catch (Exception $e) {
+ if ($pdo->inTransaction()) {
+ $pdo->rollBack();
+ }
+
+ $errorMessage = 'Errore durante il salvataggio delle impostazioni.';
+ }
+ }
+ }
+}
+
+$avatarPath = normalizeAvatarPath($profileUser['avatar'] ?? '');
+?>
+
+
+
+
+
+
+
+
+