64 lines
2.6 KiB
PHP
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 © <?= date('Y') ?> <?= e(get_setting('display_name', config()['site']['name'])) ?> – Alle Rechte vorbehalten.</footer>
|