+
+
+ Impostazioni Utente
+ + +
+ = e($successMessage); ?>
+
+
+
+
+
+ = e($errorMessage); ?>
+
+
+
+
+
+ $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'] ?? '');
+?>
+
+
+
+
+
+
+
+
+