<?php
// ========================================
// فراموشی رمز عبور — نسخه آپدیت
// ========================================
require_once 'config/database.php';
require_once 'config/settings.php';
require_once 'includes/auth.php';
require_once 'includes/functions.php';

if (Auth::isLoggedIn()) { header('Location: index.php'); exit; }

$pageTitle = 'فراموشی رمز عبور | کیف‌لند';
$success = ''; $error = '';
$notFound = false; // کاربر در سیستم نیست
$sentEmail = ''; // ایمیلی که لینک بهش فرستاده شد

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    if (!Auth::verifyCSRFToken($_POST['csrf_token'] ?? '')) {
        $error = 'خطای امنیتی. صفحه را رفرش کنید.';

    } elseif (Auth::isFormRateLimited('forgot_password', 5)) {
        $error = 'درخواست‌های زیادی ارسال کرده‌اید. کمی صبر کنید.';

    } else {
        $email = trim(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL));

        if (empty($email) || !validateEmail($email)) {
            $error = 'ایمیل وارد شده معتبر نیست.';
        } else {
            $db   = Database::getInstance()->getConnection();
            $stmt = $db->prepare("SELECT id, full_name, email FROM users WHERE email = ? AND is_active = 1");
            $stmt->execute([$email]);
            $user = $stmt->fetch();

            if (!$user) {
                // کاربر پیدا نشد — نشون بده
                $notFound = true;
                $sentEmail = $email;
            } else {
                // کاربر پیدا شد — توکن بساز و ایمیل بفرست
                $db->prepare("DELETE FROM password_resets WHERE email = ?")->execute([$email]);

                $token     = bin2hex(random_bytes(32));
                $expiresAt = date('Y-m-d H:i:s', time() + 3600);

                $db->prepare("INSERT INTO password_resets (email, token, expires_at, created_at) VALUES (?, ?, ?, NOW())")
                   ->execute([$email, $token, $expiresAt]);

                $settings = SiteSettings::getInstance();
                $siteName = $settings->get('site_name', 'کیف‌لند');
                $siteUrl  = (isset($_SERVER['HTTPS'])?'https':'http') . '://' . $_SERVER['HTTP_HOST'];
                $resetUrl = "$siteUrl/reset-password.php?token=$token";
                $fromEmail = $settings->get('site_email', 'no-reply@' . $_SERVER['HTTP_HOST']);

                $body = "
                <p>سلام <strong>" . htmlspecialchars($user['full_name']) . "</strong> عزیز،</p>
                <p>درخواست بازیابی رمز عبور حساب شما در <strong>$siteName</strong> ثبت شد.</p>
                <p>برای تغییر رمز عبور روی دکمه زیر کلیک کنید:</p>
                <p style='text-align:center;margin:28px 0;'>
                    <a href='$resetUrl'
                       style='background:linear-gradient(135deg,#10b981,#059669);color:#fff;padding:14px 36px;border-radius:12px;text-decoration:none;font-weight:700;display:inline-block;font-size:15px;box-shadow:0 4px 16px rgba(16,185,129,0.35);'>
                        تغییر رمز عبور
                    </a>
                </p>
                <p style='color:#888;font-size:13px;'>این لینک تا <strong>۱ ساعت</strong> دیگر معتبر است.</p>
                <p style='color:#888;font-size:13px;'>اگر این درخواست را شما ارسال نکرده‌اید، این ایمیل را نادیده بگیرید. حساب شما در امنیت کامل است.</p>
                <hr style='border:none;border-top:1px solid #eee;margin:20px 0;'>
                <p style='color:#aaa;font-size:12px;'>لینک مستقیم: $resetUrl</p>";

                $sent = sendEmail($email, 'بازیابی رمز عبور — ' . $siteName, $body, $fromEmail);

                Auth::logActivity('password_reset_request', 'درخواست ریست پسورد: ' . $email);

                if ($sent) {
                    $success   = 'لینک بازیابی به ایمیل شما ارسال شد.';
                    $sentEmail = $email;
                } else {
                    // ایمیل ارسال نشد — خطا
                    $error = 'خطا در ارسال ایمیل. لطفاً با پشتیبانی تماس بگیرید.';
                    error_log("Reset email failed for: $email");
                }
            }
        }
    }
}

$csrfToken = Auth::generateCSRFToken();
include 'includes/header.php';
?>

<section class="auth-section">
    <div class="auth-box">

        <?php if ($success): ?>
        <!-- ✅ لینک ارسال شد -->
        <div style="text-align:center;padding:10px 0;">
            <div style="width:72px;height:72px;background:rgba(16,185,129,0.1);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;border:2px solid rgba(16,185,129,0.3);">
                <i class="fas fa-envelope-open-text" style="font-size:1.8rem;color:var(--primary);"></i>
            </div>
            <h2 style="margin-bottom:10px;">ایمیل ارسال شد!</h2>
            <p style="color:var(--text-secondary);margin-bottom:6px;">لینک بازیابی به آدرس زیر ارسال شد:</p>
            <p style="background:var(--glass-bg-light);padding:10px 18px;border-radius:10px;border:1px solid var(--glass-border);font-weight:600;margin-bottom:20px;word-break:break-all;">
                <?= htmlspecialchars($sentEmail) ?>
            </p>
            <p style="color:var(--text-secondary);font-size:0.88rem;margin-bottom:24px;">
                اگر ایمیل دریافت نکردید پوشه اسپم را بررسی کنید.<br>
                لینک تا <strong>۱ ساعت</strong> معتبر است.
            </p>
            <a href="login.php" class="btn btn-primary btn-block">
                <i class="fas fa-sign-in-alt"></i> بازگشت به ورود
            </a>
        </div>

        <?php elseif ($notFound): ?>
        <!-- ❌ کاربر پیدا نشد -->
        <div style="text-align:center;padding:10px 0;">
            <div style="width:72px;height:72px;background:rgba(239,68,68,0.1);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;border:2px solid rgba(239,68,68,0.25);">
                <i class="fas fa-user-slash" style="font-size:1.8rem;color:var(--danger);"></i>
            </div>
            <h2 style="margin-bottom:10px;">حساب یافت نشد</h2>
            <p style="color:var(--text-secondary);margin-bottom:8px;">هیچ حسابی با این ایمیل در سیستم ثبت نشده:</p>
            <p style="background:var(--glass-bg-light);padding:10px 18px;border-radius:10px;border:1px solid var(--glass-border);font-weight:600;margin-bottom:24px;word-break:break-all;">
                <?= htmlspecialchars($sentEmail) ?>
            </p>
            <p style="color:var(--text-secondary);font-size:0.9rem;margin-bottom:24px;">
                می‌خواهید با این ایمیل حساب جدید بسازید؟
            </p>
            <div style="display:flex;flex-direction:column;gap:12px;">
                <a href="register.php?email=<?= urlencode($sentEmail) ?>" class="btn btn-primary btn-block">
                    <i class="fas fa-user-plus"></i> بله، ثبت‌نام می‌کنم
                </a>
                <a href="forgot-password.php" class="btn btn-ghost btn-block">
                    <i class="fas fa-redo"></i> ایمیل دیگری وارد کنم
                </a>
            </div>
        </div>

        <?php else: ?>
        <!-- فرم اولیه -->
        <div style="text-align:center;margin-bottom:28px;">
            <div style="width:64px;height:64px;background:rgba(16,185,129,0.1);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;border:1px solid rgba(16,185,129,0.2);">
                <i class="fas fa-lock-open" style="font-size:1.6rem;color:var(--primary);"></i>
            </div>
            <h2 style="margin-bottom:8px;">فراموشی رمز عبور</h2>
            <p style="color:var(--text-secondary);font-size:0.9rem;line-height:1.7;">
                ایمیل حساب خود را وارد کنید.<br>لینک تغییر رمز برایتان ارسال می‌شود.
            </p>
        </div>

        <?php if ($error): ?>
        <div class="alert alert-danger"><i class="fas fa-exclamation-circle"></i> <?= htmlspecialchars($error) ?></div>
        <?php endif; ?>

        <form method="POST" class="auth-form" data-single-submit>
            <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($csrfToken) ?>">
            <div class="form-group">
                <label>آدرس ایمیل</label>
                <input type="email" name="email" required placeholder="example@email.com"
                       value="<?= htmlspecialchars($_POST['email'] ?? '') ?>" autofocus>
            </div>
            <button type="submit" class="btn btn-primary btn-block">
                <i class="fas fa-paper-plane"></i> ارسال لینک بازیابی
            </button>
        </form>

        <p class="auth-link">
            <a href="login.php"><i class="fas fa-arrow-right"></i> بازگشت به ورود</a>
        </p>
        <?php endif; ?>

    </div>
</section>

<?php include 'includes/footer.php'; ?>
