<?php
/**
 * 密码找回页面
 * 物业工单管理系统
 */

require_once '../includes/functions.php';

// 如果用户已登录，重定向到仪表盘
if (isLoggedIn()) {
    redirect('../dashboard.php');
}

$errors = [];
$success = false;

// 处理密码找回表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = sanitizeInput(isset($_POST['email']) ? $_POST['email'] : '');
    
    // 验证邮箱
    if (empty($email)) {
        $errors[] = '邮箱地址不能为空';
    } elseif (!validateEmail($email)) {
        $errors[] = '请输入有效的邮箱地址';
    }
    
    // 如果没有错误，处理密码找回
    if (empty($errors)) {
        try {
            $pdo = getDBConnection();
            
            // 检查邮箱是否存在
            $stmt = $pdo->prepare("SELECT id, username, email FROM users WHERE email = ?");
            $stmt->execute([$email]);
            $user = $stmt->fetch();
            
            if ($user) {
                // 生成重置令牌
                $reset_token = generateToken(32);
                $reset_expires = date('Y-m-d H:i:s', strtotime('+1 hour'));
                
                // 更新用户的重置令牌
                $stmt = $pdo->prepare("UPDATE users SET reset_token = ?, reset_expires = ? WHERE id = ?");
                if ($stmt->execute([$reset_token, $reset_expires, $user['id']])) {
                    // 生成重置链接
                    $reset_link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/reset_password.php?token=" . $reset_token;
                    
                    // 发送重置邮件
                    $subject = "密码重置请求 - 物业工单管理系统";
                    $message = generateResetEmail($user['username'], $reset_link);
                    
                    if (sendEmail($user['email'], $subject, $message)) {
                        $success = true;
                    } else {
                        $errors[] = '邮件发送失败，请稍后重试';
                    }
                } else {
                    $errors[] = '处理失败，请稍后重试';
                }
            } else {
                // 为了安全，不透露邮箱是否存在
                $success = true;
            }
            
        } catch (PDOException $e) {
            $errors[] = '数据库错误，请稍后重试';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>密码找回 - 物业工单管理系统</title>
    <link rel="stylesheet" href="../assets/css/style.css">
</head>
<body>
    <div class="header">
        <div class="container">
            <h1>物业工单管理系统</h1>
            <p>密码找回</p>
        </div>
    </div>

    <div class="container">
        <div class="card">
            <h2>找回密码</h2>
            
            <?php if ($success): ?>
                <div class="alert alert-success">
                    <h3>邮件已发送</h3>
                    <p>如果该邮箱地址已注册，我们已向您发送了密码重置链接。</p>
                    <p>请检查您的邮箱并点击重置链接来设置新密码。</p>
                    <p><strong>注意：</strong>重置链接将在1小时后失效。</p>
                </div>
                <div class="form-group">
                    <a href="login.php" class="btn btn-primary">返回登录</a>
                </div>
            <?php else: ?>
                <?php if (!empty($errors)): ?>
                    <?php foreach ($errors as $error): ?>
                        <div class="alert alert-error"><?php echo $error; ?></div>
                    <?php endforeach; ?>
                <?php endif; ?>
                
                <p>请输入您注册时使用的邮箱地址，我们将向您发送密码重置链接。</p>
                
                <form method="POST" action="">
                    <div class="form-group">
                        <label for="email">邮箱地址 *</label>
                        <input type="email" id="email" name="email" class="form-control" 
                               value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ''; ?>" 
                               required>
                    </div>
                    
                    <div class="form-group">
                        <button type="submit" class="btn btn-primary">发送重置链接</button>
                        <a href="login.php" class="btn btn-secondary">返回登录</a>
                    </div>
                </form>
            <?php endif; ?>
        </div>
    </div>

    <div class="footer">
        <div class="container">
            <p>&copy; 2024 物业工单管理系统. 保留所有权利.</p>
        </div>
    </div>
</body>
</html>
