<?php
// 开启会话
session_start();

// 引入必要的文件
require_once 'includes/config.php';
require_once 'includes/functions.php';

// 如果用户已登录，则重定向到管理员仪表盘
if (isLoggedIn()) {
    redirect('admin/dashboard.php');
}

// 定义变量并初始化
$username = $password = "";
$username_err = $password_err = $login_err = "";

// 处理表单提交
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 验证用户名
    if (empty(trim($_POST["username"]))) {
        $username_err = "请输入用户名";
    } else {
        $username = trim($_POST["username"]);
    }
    
    // 验证密码
    if (empty(trim($_POST["password"]))) {
        $password_err = "请输入密码";
    } else {
        $password = trim($_POST["password"]);
    }
    
    // 验证凭据
    if (empty($username_err) && empty($password_err)) {
        // 准备查询语句
        $sql = "SELECT id, username, password, role FROM admin WHERE username = ?";
        
        if ($stmt = $conn->prepare($sql)) {
            // 绑定变量
            $stmt->bind_param("s", $param_username);
            
            // 设置参数
            $param_username = $username;
            
            // 执行语句
            if ($stmt->execute()) {
                // 存储结果
                $stmt->store_result();
                
                // 检查用户名是否存在，如果存在则验证密码
                if ($stmt->num_rows == 1) {                    
                    // 绑定结果变量
                    $stmt->bind_result($id, $username, $hashed_password, $role);
                    if ($stmt->fetch()) {
                        if (password_verify($password, $hashed_password)) {
                            // 密码正确，启动新会话
                            session_start();
                            
                            // 存储数据到会话变量
                            $_SESSION["admin_id"] = $id;
                            $_SESSION["admin_username"] = $username;
                            $_SESSION["admin_role"] = $role;
                            
                            // 重定向到管理员仪表盘
                            redirect("admin/dashboard.php");
                        } else {
                            // 密码不正确
                            $login_err = "用户名或密码无效";
                        }
                    }
                } else {
                    // 用户名不存在
                    $login_err = "用户名或密码无效";
                }
            } else {
                $login_err = "发生错误，请重试";
            }
            
            // 关闭语句
            $stmt->close();
        }
    }
}

// 更新所有证件状态
checkAndUpdateAllDocumentStatus($conn);
?>

<!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="login-container">
        <div class="login-form">
            <h2>证件到期提醒系统</h2>
            
            <?php 
            if(!empty($login_err)){
                echo '<div class="alert alert-danger">' . $login_err . '</div>';
            }        
            ?>

            <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                <div class="form-group">
                    <label class="form-label">用户名</label>
                    <input type="text" name="username" class="form-control <?php echo (!empty($username_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $username; ?>">
                    <?php if(!empty($username_err)) echo '<span class="invalid-feedback">' . $username_err . '</span>'; ?>
                </div>    
                <div class="form-group">
                    <label class="form-label">密码</label>
                    <input type="password" name="password" class="form-control <?php echo (!empty($password_err)) ? 'is-invalid' : ''; ?>">
                    <?php if(!empty($password_err)) echo '<span class="invalid-feedback">' . $password_err . '</span>'; ?>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" value="登录">
                </div>
            </form>
        </div>
    </div>
</body>
</html>
