<?php
require_once __DIR__ . '/../config/config.php';
require_once __DIR__ . '/../includes/auth.php';

$message = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    verifyCSRFToken($_POST['csrf_token'] ?? '');
    $email = sanitize($_POST['email'] ?? '');

    if (empty($email)) {
        $error = 'กรุณากรอกอีเมล';
    } else {
        $db = getDBConnection();
        $stmt = $db->prepare("SELECT id FROM users WHERE email = ?");
        $stmt->execute([$email]);
        $user = $stmt->fetch();

        if ($user) {
            $token = bin2hex(random_bytes(32));
            $expires = date('Y-m-d H:i:s', strtotime('+1 hour'));
            $stmt = $db->prepare("UPDATE users SET reset_token = ?, reset_expires = ? WHERE email = ?");
            $stmt->execute([$token, $expires, $email]);

            // Mock email sending notification
            $resetLink = SITE_URL . "/forgot_password.php?token=" . $token;
            $message = "ระบบส่งลิงก์สำหรับรีเซ็ตรหัสผ่านเรียบร้อยแล้ว (สำหรับทดสอบ: <a href='$resetLink'>คลิกที่นี่เพื่อตั้งรหัสผ่านใหม่</a>)";
        } else {
            $error = 'ไม่พบบัญชีผู้ใช้ที่ใช้อีเมลนี้ในระบบ';
        }
    }
}

// Reset token submission
if (isset($_GET['token'])) {
    $token = sanitize($_GET['token']);
    $db = getDBConnection();
    $stmt = $db->prepare("SELECT id FROM users WHERE reset_token = ? AND reset_expires > NOW()");
    $stmt->execute([$token]);
    $user = $stmt->fetch();

    if (!$user) {
        $error = 'ลิงก์รีเซ็ตรหัสผ่านไม่ถูกต้องหรือหมดอายุแล้ว';
    } elseif ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_password'])) {
        $newPass = $_POST['new_password'];
        if (strlen($newPass) < 6) {
            $error = 'รหัสผ่านใหม่ต้องมีความยาวอย่างน้อย 6 ตัวอักษร';
        } else {
            $hashed = password_hash($newPass, PASSWORD_BCRYPT);
            $stmt = $db->prepare("UPDATE users SET password = ?, reset_token = NULL, reset_expires = NULL WHERE id = ?");
            $stmt->execute([$hashed, $user['id']]);
            $_SESSION['flash_success'] = 'เปลี่ยนรหัสผ่านใหม่สำเร็จ! กรุณาเข้าสู่ระบบ';
            header('Location: ' . SITE_URL . '/login.php');
            exit;
        }
    }
}

$pageTitle = "ลืมรหัสผ่าน";
require_once __DIR__ . '/../includes/header.php';
?>

<div class="row justify-content-center my-5">
  <div class="col-md-5">
    <div class="card card-custom p-4">
      <div class="text-center mb-4">
        <h3 class="fw-bold">🔒 ลืมรหัสผ่าน</h3>
        <p class="text-muted">กรอกอีเมลของคุณเพื่อรับลิงก์รีเซ็ตรหัสผ่าน</p>
      </div>

      <?php if (!empty($message)): ?>
        <div class="alert alert-success py-2"><?php echo $message; ?></div>
      <?php endif; ?>

      <?php if (!empty($error)): ?>
        <div class="alert alert-danger py-2"><?php echo $error; ?></div>
      <?php endif; ?>

      <?php if (isset($_GET['token']) && isset($user) && $user): ?>
        <form method="POST" action="">
          <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
          <div class="mb-3">
            <label class="form-label">รหัสผ่านใหม่ *</label>
            <input type="password" name="new_password" class="form-control" placeholder="อย่างน้อย 6 ตัวอักษร" required>
          </div>
          <button type="submit" class="btn btn-primary-custom w-100 py-2">ตั้งรหัสผ่านใหม่ ✅</button>
        </form>
      <?php else: ?>
        <form method="POST" action="">
          <input type="hidden" name="csrf_token" value="<?php echo generateCSRFToken(); ?>">
          <div class="mb-3">
            <label class="form-label">อีเมล (Email) *</label>
            <input type="email" name="email" class="form-control" placeholder="name@example.com" required>
          </div>
          <button type="submit" class="btn btn-primary-custom w-100 py-2">ส่งลิงก์รีเซ็ตรหัสผ่าน ✉️</button>
        </form>
      <?php endif; ?>

      <div class="mt-4 text-center">
        <a href="login.php" class="text-primary text-decoration-none">← กลับสู่หน้าเข้าสู่ระบบ</a>
      </div>
    </div>
  </div>
</div>

<?php require_once __DIR__ . '/../includes/footer.php'; ?>
