<?php
session_start();
require_once $_SERVER['DOCUMENT_ROOT'] . '/config.php';

$erfolg = '';
$fehler = '';
$token = $_GET['token'] ?? null;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    // E-Mail senden
    if (isset($_POST['email']) && !$token) {
        $email = $_POST['email'];
        
        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $stmt = $pdo->prepare("SELECT id, username FROM users WHERE email = ?");
            $stmt->execute([$email]);
            $user = $stmt->fetch();
            
            if ($user) {
                $resetToken = bin2hex(random_bytes(32));
                $resetExpiry = date('Y-m-d H:i:s', strtotime('+1 hour'));
                
                $stmt = $pdo->prepare("UPDATE users SET password_reset_token = ?, token_expiry = ? WHERE id = ?");
                $stmt->execute([$resetToken, $resetExpiry, $user['id']]);
                
                $resetLink = "https://" . $_SERVER['HTTP_HOST'] . "/members/reset_password.php?token=" . $resetToken;
                $subject = "Passwort zurücksetzen";
                $body = "Hallo,\n\nKlicken Sie hier: $resetLink\n\nLink ist 1 Stunde gültig.";
                
                if (mail($email, $subject, $body)) {
                    $erfolg = "E-MAIL VERSENDET! Prüfen Sie Ihr Postfach und klicken Sie auf den Link.";
                } else {
                    $fehler = "E-Mail konnte nicht versendet werden.";
                }
            } else {
                $erfolg = "Falls die E-Mail existiert, wurde ein Link gesendet.";
            }
        } else {
            $fehler = "Ungültige E-Mail-Adresse.";
        }
    }
    
    // Passwort ändern
    if (isset($_POST['new_password']) && $token) {
        $newPassword = $_POST['new_password'];
        $confirmPassword = $_POST['confirm_password'];
        
        if ($newPassword === $confirmPassword && strlen($newPassword) >= 6) {
            $hashedPassword = password_hash($newPassword, PASSWORD_DEFAULT);
            $stmt = $pdo->prepare("UPDATE users SET password_hash = ?, password_reset_token = NULL, token_expiry = NULL WHERE password_reset_token = ?");
            
            if ($stmt->execute([$hashedPassword, $token])) {
                $erfolg = "PASSWORT GEÄNDERT! Sie können sich jetzt anmelden.";
                $token = null;
            } else {
                $fehler = "Token ungültig oder abgelaufen.";
            }
        } else {
            $fehler = "Passwörter stimmen nicht überein oder zu kurz.";
        }
    }
}

// Token prüfen
$user = null;
if ($token) {
    $stmt = $pdo->prepare("SELECT username FROM users WHERE password_reset_token = ? AND token_expiry > NOW()");
    $stmt->execute([$token]);
    $user = $stmt->fetch();
    
    if (!$user) {
        $fehler = "Reset-Link ungültig oder abgelaufen.";
        $token = null;
    }
}

$pageTitle = "Passwort zurücksetzen - SchalkesOpa Fanclub";
$metaDescription = "Setzen Sie Ihr Passwort zurück, wenn Sie es vergessen haben.";
$metaKeywords = "Passwort zurücksetzen, SchalkesOpa, Fanclub";
$canonicalUrl = "/members/reset_password.php";
$extraCss = "/assets/css/reset.css";

$content = "
<div class='reset-password-container'>
<div class='reset-password'>
    <h1>Passwort zurücksetzen</h1>";

// ERFOLG anzeigen
if ($erfolg) {
    $content .= "
    <div class='alert alert-success'>
        ✅ $erfolg
    </div>";
    
    if (strpos($erfolg, 'E-MAIL VERSENDET') !== false) {
        $content .= "
        <div class='success-instructions'>
            <h3>📧 Was jetzt tun?</h3>
            <ol>
                <li><strong>E-Mail öffnen</strong> (auch Spam prüfen)</li>
                <li><strong>Auf Link klicken</strong></li>
                <li><strong>Neues Passwort eingeben</strong></li>
            </ol>
            <div class='tip-box'>
                <strong>💡 Tipp:</strong> Der Link ist nur 1 Stunde gültig!
            </div>
            <button onclick='location.reload()' class='btn-secondary'>
                🔄 Neue E-Mail anfordern
            </button>
        </div>";
    }
    
    if (strpos($erfolg, 'PASSWORT GEÄNDERT') !== false) {
        $content .= "
        <div class='success-final'>
            <h3>🎉 Passwort erfolgreich geändert!</h3>
            <p>Sie können sich jetzt mit Ihrem neuen Passwort anmelden.</p>
            <a href='/members/login.php' class='hero-button'>
                🚀 Jetzt anmelden
            </a>
        </div>";
    }
}

// FEHLER anzeigen
if ($fehler) {
    $content .= "
    <div class='alert alert-error'>
        ❌ $fehler
    </div>";
}

// Token da = Passwort-Formular
if ($token && $user) {
    $content .= "
    <div class='password-form-section'>
        <h3>🔐 Neues Passwort festlegen</h3>
        <p>Hallo <strong>{$user['username']}</strong>, bitte geben Sie Ihr neues Passwort ein.</p>
        
        <form method='POST' class='reset-form'>
            <div class='form-group'>
                <label for='new_password'>Neues Passwort</label>
                <input type='password' id='new_password' name='new_password' placeholder='Mindestens 6 Zeichen' required minlength='6'>
            </div>
            <div class='form-group'>
                <label for='confirm_password'>Passwort bestätigen</label>
                <input type='password' id='confirm_password' name='confirm_password' placeholder='Passwort wiederholen' required minlength='6'>
            </div>
            <button type='submit' class='hero-button'>🔒 Passwort ändern</button>
        </form>
        
        <div class='security-hint'>
            <small><strong>Sicherheitshinweis:</strong> Verwenden Sie ein starkes Passwort mit mindestens 6 Zeichen.</small>
        </div>
    </div>";
    
} else if (!$erfolg || strpos($erfolg, 'E-MAIL VERSENDET') === false) {
    // Standard E-Mail-Formular
    $content .= "
    <div class='email-form-section'>
        <p>Geben Sie Ihre E-Mail-Adresse ein, um einen Reset-Link zu erhalten:</p>
        
        <form method='POST' class='reset-form'>
            <div class='form-group'>
                <label for='email'>E-Mail-Adresse</label>
                <input type='email' id='email' name='email' placeholder='ihre.email@beispiel.de' required>
            </div>
            <button type='submit' class='hero-button'>Reset-Link senden</button>
        </form>
        
        <div class='security-info'>
            <p><small>🔒 Ihre Daten werden sicher übertragen und vertraulich behandelt.</small></p>
        </div>
    </div>";
}

$content .= "
    <div class='back-link'>
        <a href='/members/login.php'>← Zurück zum Login</a>
    </div>
</div>
</div>

<style>
/* Reset Password spezifische Styles - überschreibt Homepage CSS */
.reset-password-container {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    position: relative;
    z-index: 10;
    margin-top: 80px; /* Platz für Header */
}

.reset-password {
    background: linear-gradient(135deg, var(--glass) 0%, rgba(255, 255, 255, 0.02) 100%);
    backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 30px;
    padding: 3rem;
    max-width: 500px;
    width: 100%;
    box-shadow: 0 25px 50px rgba(0, 0, 0, 0.3),
                inset 0 0 30px rgba(255, 255, 255, 0.05);
    position: relative;
    text-align: center;
}

.reset-password::before {
    content: '';
    position: absolute;
    top: -2px;
    left: -2px;
    right: -2px;
    bottom: -2px;
    background: var(--gradient);
    border-radius: 30px;
    opacity: 0.3;
    z-index: -1;
    filter: blur(10px);
    animation: borderGlow 3s ease-in-out infinite;
}

.reset-password h1 {
    font-size: 2.5rem;
    font-weight: 900;
    background: var(--gradient);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    margin-bottom: 2rem;
    animation: glow 3s ease-in-out infinite;
}

.reset-password h3 {
    color: var(--light);
    margin-bottom: 1.5rem;
    font-size: 1.5rem;
}

.reset-password p {
    color: var(--light);
    opacity: 0.9;
    margin-bottom: 1.5rem;
    line-height: 1.6;
}

/* Alert Boxes */
.alert {
    padding: 1.5rem;
    margin: 1.5rem 0;
    border-radius: 15px;
    font-size: 1.1rem;
    font-weight: bold;
    text-align: center;
}

.alert-success {
    background: linear-gradient(135deg, rgba(0, 255, 136, 0.2) 0%, rgba(0, 255, 136, 0.1) 100%);
    color: var(--secondary);
    border: 2px solid rgba(0, 255, 136, 0.3);
}

.alert-error {
    background: linear-gradient(135deg, rgba(255, 0, 110, 0.2) 0%, rgba(255, 0, 110, 0.1) 100%);
    color: var(--primary);
    border: 2px solid rgba(255, 0, 110, 0.3);
}

/* Success Instructions */
.success-instructions {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 20px;
    padding: 2rem;
    margin: 2rem 0;
    text-align: left;
}

.success-instructions h3 {
    text-align: center;
    margin-bottom: 1.5rem;
}

.success-instructions ol {
    margin: 1.5rem 0;
    padding-left: 1.5rem;
}

.success-instructions li {
    margin-bottom: 0.8rem;
    color: var(--light);
    line-height: 1.6;
}

.tip-box {
    background: rgba(255, 193, 7, 0.1);
    border: 1px solid rgba(255, 193, 7, 0.3);
    border-radius: 10px;
    padding: 1rem;
    margin: 1.5rem 0;
    text-align: center;
    color: #ffc107;
}

.btn-secondary {
    background: rgba(255, 255, 255, 0.1);
    color: var(--light);
    border: 1px solid rgba(255, 255, 255, 0.2);
    padding: 0.8rem 1.5rem;
    border-radius: 25px;
    cursor: pointer;
    font-weight: 600;
    transition: all 0.3s ease;
    margin-top: 1rem;
}

.btn-secondary:hover {
    background: rgba(255, 255, 255, 0.2);
    transform: translateY(-2px);
}

/* Success Final */
.success-final {
    text-align: center;
    padding: 2rem 0;
}

.success-final h3 {
    margin-bottom: 1rem;
}

.success-final .hero-button {
    margin-top: 1.5rem;
}

/* Form Styles */
.reset-form {
    margin: 2rem 0;
}

.form-group {
    margin-bottom: 1.5rem;
    text-align: left;
}

.form-group label {
    display: block;
    margin-bottom: 0.5rem;
    color: var(--light);
    font-weight: 600;
    font-size: 1rem;
}

.form-group input {
    width: 100%;
    padding: 1rem 1.5rem;
    background: rgba(255, 255, 255, 0.05);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 25px;
    color: var(--light);
    font-size: 1rem;
    transition: all 0.3s ease;
    box-sizing: border-box;
}

.form-group input:focus {
    outline: none;
    border-color: var(--primary);
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 0 0 3px rgba(255, 0, 110, 0.1);
}

.form-group input::placeholder {
    color: rgba(255, 255, 255, 0.5);
}

/* Hero Button Override */
.reset-password .hero-button {
    display: inline-block;
    padding: 1rem 2.5rem;
    background: var(--gradient);
    color: white;
    text-decoration: none;
    border-radius: 25px;
    font-size: 1.1rem;
    font-weight: 600;
    transition: all 0.3s ease;
    box-shadow: 0 10px 30px rgba(255, 0, 110, 0.3);
    border: none;
    cursor: pointer;
    width: 100%;
    margin-top: 1rem;
}

.reset-password .hero-button:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 40px rgba(255, 0, 110, 0.5);
}

/* Security Elements */
.security-hint,
.security-info {
    background: rgba(255, 255, 255, 0.03);
    border-radius: 10px;
    padding: 1rem;
    margin-top: 1.5rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.security-hint small,
.security-info small {
    color: rgba(255, 255, 255, 0.7);
    font-size: 0.9rem;
}

/* Back Link */
.back-link {
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.back-link a {
    color: var(--secondary);
    text-decoration: none;
    font-weight: 500;
    transition: all 0.3s ease;
}

.back-link a:hover {
    color: var(--primary);
    text-decoration: underline;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .reset-password-container {
        padding: 1rem;
        margin-top: 60px;
    }
    
    .reset-password {
        padding: 2rem;
        max-width: 100%;
    }
    
    .reset-password h1 {
        font-size: 2rem;
    }
    
    .success-instructions {
        padding: 1.5rem;
    }
    
    .form-group input {
        padding: 0.8rem 1.2rem;
    }
}

/* Zusätzliche Glassmorphism Effekte */
.password-form-section,
.email-form-section {
    background: rgba(255, 255, 255, 0.02);
    border-radius: 20px;
    padding: 1.5rem;
    margin: 1.5rem 0;
    border: 1px solid rgba(255, 255, 255, 0.05);
}
</style>";

$content .= "
    <div class='login-link'><br>
        <p>Zurück zum <a href='/members/login.php'>Login</a></p>
    </div>
</div>
</div>";

include $_SERVER['DOCUMENT_ROOT'] . '/private/includes/template.php';
?>