Files
2026-10-16 19:12:18 +00:00

64 lines
2.6 KiB
PHP

<?php
require_once __DIR__ . '/includes/bootstrap.php';
$token = $_GET['token'] ?? $_POST['token'] ?? '';
$email = $token ? verify_password_reset('customer', $token) : null;
$errors = [];
$done = false;
if (!$token || !$email) {
$errors[] = 'Dieser Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen Link an.';
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
verify_csrf();
$pass1 = $_POST['password'] ?? '';
$pass2 = $_POST['password2'] ?? '';
$pwError = validate_password_strength($pass1);
if ($pwError) {
$errors[] = $pwError;
} elseif ($pass1 !== $pass2) {
$errors[] = 'Die Passwörter stimmen nicht überein.';
} else {
get_db()->prepare('UPDATE users SET password_hash = ? WHERE email = ?')
->execute([password_hash($pass1, PASSWORD_DEFAULT), $email]);
consume_password_reset('customer', $token);
$done = true;
}
}
$pageTitle = 'Passwort zurücksetzen';
$activePage = 'login';
require __DIR__ . '/includes/header_customer.php';
?>
</div><!-- page-content -->
<?php $__banner = get_setting('banner_path'); ?>
<div class="auth-wrap<?= $__banner ? ' has-image' : '' ?>"<?= $__banner ? ' style="background-image:url(' . e($__banner) . ')"' : '' ?>>
<div class="auth-card">
<?php require __DIR__ . '/includes/brand_block.php'; ?>
<h1>Neues Passwort festlegen</h1>
<?php foreach ($errors as $err): ?>
<div class="flash error"><?= e($err) ?></div>
<?php endforeach; ?>
<?php if ($done): ?>
<div class="flash success">Ihr Passwort wurde geändert. Sie können sich jetzt anmelden.</div>
<p style="margin-top:18px;font-size:.85rem"><a href="/login.php">Zur Anmeldung →</a></p>
<?php elseif ($email): ?>
<form method="post">
<?= csrf_field() ?>
<input type="hidden" name="token" value="<?= e($token) ?>">
<label for="password">Neues Passwort</label>
<input type="password" id="password" name="password" required autofocus>
<label for="password2">Neues Passwort wiederholen</label>
<input type="password" id="password2" name="password2" required>
<div class="btn-row">
<button type="submit" class="btn" style="width:100%">Passwort speichern</button>
</div>
</form>
<?php else: ?>
<p style="margin-top:18px;font-size:.85rem"><a href="/forgot_password.php">Neuen Link anfordern →</a></p>
<?php endif; ?>
</div>
</div>
<footer class="public-footer">Copyright &copy; <?= date('Y') ?> <?= e(get_setting('display_name', config()['site']['name'])) ?> &ndash; Alle Rechte vorbehalten.</footer>