95 lines
3.4 KiB
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>© 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();
|
|
|