Upload via GUI (258 Dateien)

This commit is contained in:
2026-10-16 19:12:15 +00:00
parent 491b87f468
commit 56deade877
50 changed files with 23552 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
<?php
require_once __DIR__ . '/includes/bootstrap.php';
if (current_user()) {
redirect('/home.php');
}
$errors = [];
$sent = false;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
verify_csrf();
$email = trim($_POST['email'] ?? '');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'Bitte geben Sie eine gültige E-Mail-Adresse an.';
} elseif (!rate_limit_check('password_reset_request', client_ip(), 3, 15)) {
$errors[] = 'Zu viele Anfragen. Bitte versuchen Sie es in einigen Minuten erneut.';
} elseif (!rate_limit_check('password_reset_request_email', $email, 2, 60)) {
// Gleiche Fehlermeldung – verrät nicht ob die E-Mail bekannt ist
$errors[] = 'Zu viele Anfragen. Bitte versuchen Sie es in einigen Minuten erneut.';
} else {
$stmt = get_db()->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$email]);
$user = $stmt->fetch();
// Immer dieselbe Erfolgsmeldung anzeigen, unabhängig davon, ob das Konto existiert
// (verhindert, dass Angreifer registrierte E-Mail-Adressen erraten können).
if ($user) {
$token = create_password_reset('customer', $email);
$link = base_url() . '/reset_password.php?token=' . urlencode($token);
email_send_and_log($email, 'Passwort zurücksetzen', email_password_reset_body($link), null, 'Passwort-zurücksetzen-Mail (Kunde)');
}
$sent = true;
}
}
$pageTitle = 'Passwort vergessen';
$activePage = 'login';
require __DIR__ . '/includes/header_customer.php';
?>
<style>.page-content{padding:0!important;margin:0!important}</style>
</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>Passwort vergessen</h1>
<div class="sub">Wir senden Ihnen einen Link zum Zurücksetzen.</div>
<?php foreach ($errors as $err): ?>
<div class="flash error"><?= e($err) ?></div>
<?php endforeach; ?>
<?php if ($sent): ?>
<div class="flash success">Falls ein Konto mit dieser E-Mail-Adresse existiert, wurde soeben ein Link zum Zurücksetzen versendet.</div>
<p style="margin-top:18px;font-size:.85rem"><a href="/login.php">← Zur Anmeldung</a></p>
<?php else: ?>
<form method="post">
<?= csrf_field() ?>
<label for="email">E-Mail-Adresse</label>
<input type="email" id="email" name="email" required autofocus>
<div class="btn-row">
<button type="submit" class="btn" style="width:100%">Link anfordern</button>
</div>
</form>
<p style="margin-top:18px;font-size:.85rem"><a href="/login.php">← Zur Anmeldung</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>