<?php
/**
 * SSO - Token 登录验证
 * 验证登录令牌并自动登录用户
 */

require_once __DIR__ . '/../MPHX/common.php';

// 获取 token
$token = isset($_GET['token']) ? $_GET['token'] : '';

if (empty($token)) {
    // 没有 token，重定向到登录页
    header('Location: /user/login.php');
    exit;
}

try {
    // 转义 token 防止 SQL 注入
    $token_escaped = $DB->escape($token);
    
    // 查询 token 信息
    $token_info = $DB->get_row("SELECT * FROM `user_tokens` WHERE `token` = '{$token_escaped}'");
    
    if (!$token_info) {
        // token 不存在
        header('Location: /user/login.php?msg=token_invalid');
        exit;
    }
    
    // 检查 token 是否过期
    if (strtotime($token_info['expire_time']) < time()) {
        // token 已过期
        $DB->query("DELETE FROM `user_tokens` WHERE `token` = '{$token_escaped}'");
        header('Location: /user/login.php?msg=token_expired');
        exit;
    }
    
    // 转义 user_id 防止 SQL 注入
    $user_id_escaped = $DB->escape($token_info['user_id']);
    
    // 查询用户信息
    $user = $DB->get_row("SELECT * FROM `user` WHERE `id` = '{$user_id_escaped}'");
    
    if (!$user) {
        // 用户不存在
        header('Location: /user/login.php?msg=user_not_found');
        exit;
    }
    
    // 检查用户状态
    if ($user['status'] != '1') {
        // 用户被禁用
        header('Location: /user/login.php?msg=user_disabled');
        exit;
    }
    
    // 设置登录 cookie
    $cookie_expire = time() + 86400; // 24 小时
    $cookie_token = md5($user['username'].$user['password'].time());
    
    setcookie('user_token', $cookie_token, $cookie_expire, '/');
    setcookie('user_id', $user['id'], $cookie_expire, '/');
    setcookie('username', $user['username'], $cookie_expire, '/');
    
    // 转义 cookie_token 和 user_id 防止 SQL 注入
    $cookie_token_escaped = $DB->escape($cookie_token);
    $user_id_escaped2 = $DB->escape($user['id']);
    
    // 保存 token 到数据库（用于验证）
    $DB->query("UPDATE `user` SET `token` = '{$cookie_token_escaped}' WHERE `id` = '{$user_id_escaped2}'");
    
    // 删除使用过的 SSO token
    $DB->query("DELETE FROM `user_tokens` WHERE `token` = '{$token_escaped}'");
    
    // 重定向到用户中心首页
    header('Location: /user/index.php');
    exit;
    
} catch (Exception $e) {
    header('Location: /user/login.php?msg=error');
    exit;
}
