76 lines
2.5 KiB
PHP
76 lines
2.5 KiB
PHP
<?php
|
|
include_once(__DIR__ . '/controller/DatabaseController.php');
|
|
include_once(__DIR__ . '/controller/RoutesController.php');
|
|
include_once(__DIR__ . '/controller/DataController.php');
|
|
include_once(__DIR__ . '/modules/Mail.php');
|
|
|
|
$message = null;
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$email = trim($_POST['email'] ?? '');
|
|
|
|
if ($email !== '') {
|
|
$benutzerRows = DatabaseShow("Benutzer", "ID, NAME", "EMAIL = ?", $email);
|
|
|
|
if (!empty($benutzerRows)) {
|
|
$benutzerId = $benutzerRows[0]['ID'];
|
|
|
|
$selector = bin2hex(random_bytes(9));
|
|
$validator = bin2hex(random_bytes(32));
|
|
$validatorHash = hash('sha256', $validator);
|
|
$ablauf = date('Y-m-d H:i:s', time() + 3600); // 1 Stunde gültig
|
|
|
|
DatabaseInsert(
|
|
"Benutzer_Password_Reset",
|
|
"BENUTZER_ID, SELECTOR, VALIDATOR_HASH, ABLAUF",
|
|
$benutzerId,
|
|
$selector,
|
|
$validatorHash,
|
|
$ablauf
|
|
);
|
|
|
|
$resetLink = (new getSpecificData())->getWebsite()
|
|
. "/reset_password.php?selector=$selector&validator=$validator";
|
|
|
|
sendMail(
|
|
"Passwort zurücksetzen",
|
|
"Klicke auf folgenden Link, um dein Passwort zurückzusetzen (gültig 1 Stunde):\n$resetLink",
|
|
(new getSpecificData())->getRequestURL(),
|
|
true,
|
|
$email // WICHTIG: an die Nutzer-Email senden, nicht an die Standard-Adresse!
|
|
);
|
|
}
|
|
// Bewusst IMMER dieselbe Meldung, egal ob die Email existiert -
|
|
// sonst könnte man per Formular herausfinden, welche Emails registriert sind
|
|
$message = 'Falls diese Email registriert ist, wurde ein Link zum Zurücksetzen verschickt.';
|
|
}
|
|
}
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="de">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>Passwort vergessen</title>
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
|
|
<body>
|
|
<div class="login-container">
|
|
<div class="login-box">
|
|
<h2>Passwort vergessen</h2>
|
|
|
|
<?php if ($message): ?>
|
|
<p class="login-error" style="color:#28a745;"><?= htmlspecialchars($message) ?></p>
|
|
<?php endif; ?>
|
|
|
|
<form method="post" class="register-form">
|
|
<input type="email" name="email" placeholder="Deine Email" required>
|
|
<button type="submit">Link anfordern</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
|
|
</html>
|