togethere.cloud/public_html/account/settings/change_password_request.php

95 lines
3.4 KiB
PHP

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/session_bootstrap.php';
if (empty($_SESSION['logged_in'])) {
header('Location: /login/');
exit();
}
$host = "localhost";
$db = "togethere_cloud";
$user = "root";
$pass = "HasloDoSQL";
try {
$pdo = og_session_get_pdo();
if (!$pdo instanceof PDO) {
throw new PDOException('Nie udało się zainicjalizować połączenia z bazą danych.');
}
} catch (PDOException $e) {
die("Błąd połączenia z bazą danych: " . $e->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() . "<br><br>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 = "
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<style>
body { font-family: 'Lato', Arial, sans-serif; background: #f0f8ff; padding: 20px; }
.container { max-width: 600px; margin: 0 auto; background: white; padding: 40px; border-radius: 15px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
h1 { color: #ff9800; text-align: center; }
.code { font-size: 32px; font-weight: bold; color: #ff9800; text-align: center; letter-spacing: 5px; margin: 30px 0; padding: 20px; background: #fff3e0; border-radius: 10px; }
p { color: #2c3e50; line-height: 1.6; }
.footer { margin-top: 30px; padding-top: 20px; border-top: 2px solid #fff3e0; text-align: center; color: #7f8c8d; font-size: 14px; }
</style>
</head>
<body>
<div class='container'>
<h1>🔒 Zmiana hasła</h1>
<p>Otrzymaliśmy prośbę o zmianę hasła do Twojego konta.</p>
<p>Twój kod weryfikacyjny to:</p>
<div class='code'>$reset_code</div>
<p>Kod jest ważny przez <strong>15 minut</strong>.</p>
<p><strong>Jeśli to nie Ty zażądałeś zmiany hasła, zignoruj tę wiadomość.</strong></p>
<div class='footer'>
<p>&copy; 2026 Wspólnie. Wszelkie prawa zastrzeżone.</p>
</div>
</div>
</body>
</html>
";
sendEmailSMTP($userData['email'], $subject, $message);
// Przekierowanie do strony weryfikacji
header('Location: /account/settings/change_password_verify.php');
exit();