getMessage());
}
$user_id = $_SESSION['user_id'];
require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/account_suspension.php';
$suspensionState = og_is_current_user_suspended($pdo);
if (!empty($suspensionState['is_suspended'])) {
header('Location: /account/settings/?error=' . urlencode('Twoje konto jest zawieszone. Wysłanie kodu zmiany hasła jest zablokowane.'));
exit();
}
// Pobranie danych użytkownika
$stmt = $pdo->prepare("SELECT email FROM users WHERE id = ?");
$stmt->execute([$user_id]);
$userData = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$userData) {
die("Nie znaleziono użytkownika");
}
// Generowanie 6-cyfrowego kodu
$reset_code = str_pad(random_int(0, 999999), 6, '0', STR_PAD_LEFT);
$reset_expires = date('Y-m-d H:i:s', strtotime('+15 minutes'));
// Zapisanie kodu w bazie
try {
$update = $pdo->prepare("UPDATE users SET password_reset_code = ?, password_reset_expires = ? WHERE id = ?");
$update->execute([$reset_code, $reset_expires, $user_id]);
} catch (PDOException $e) {
die("Błąd aktualizacji bazy: " . $e->getMessage() . "
Czy dodałeś kolumny password_reset_code i password_reset_expires do tabeli users?");
}
// Wysłanie emaila z kodem
require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/smtp_helper.php';
$subject = "Kod zmiany hasła - Wspólnie";
$message = "
Otrzymaliśmy prośbę o zmianę hasła do Twojego konta.
Twój kod weryfikacyjny to:
Kod jest ważny przez 15 minut.
Jeśli to nie Ty zażądałeś zmiany hasła, zignoruj tę wiadomość.