<?php
/**
 * 魔方财务自动登录接口
 * 用于魔方财务插件自动登录用户中心
 */

// 必须在加载common.php之前处理会话和cookie
// 先清除所有现有的会话数据和cookie
if (isset($_SESSION)) {
    session_unset();
}
if (session_status() === PHP_SESSION_ACTIVE) {
    session_destroy();
}

// 清除可能存在的旧cookie
setcookie('user_token', '', time() - 3600, '/');
setcookie('user_token', '', time() - 3600, '/user');
setcookie('user_token', '', time() - 3600, '/user/');
setcookie('user_id', '', time() - 3600, '/');
setcookie('username', '', time() - 3600, '/');

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

// 获取参数 - 只支持POST，避免密码出现在URL中
$gn = isset($_POST['gn']) ? daddslashes($_POST['gn']) : '';

if ($gn !== 'logine') {
    header('Location: /user/login.php');
    exit;
}

// 获取自动登录参数 - 只支持POST
$username = isset($_POST['username']) ? daddslashes($_POST['username']) : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';

// 如果没有用户名或密码，显示登录页面
if (empty($username) || empty($password)) {
    header('Location: /user/login.php');
    exit;
}

// 转义用户名防止SQL注入
$username_escaped = $DB->escape($username);

// 查询用户信息 - 从zj表查询（主机表，魔方财务开通的用户）
$zj = $DB->get_row("SELECT * FROM `zj` WHERE `user` = '{$username_escaped}'");

if (!$zj) {
    header('Location: /user/login.php?msg=user_not_found');
    exit;
}

// 验证密码
$password_valid = false;

// 方式1：如果密码是明文存储（不推荐，但兼容旧系统）
if ($zj['pass'] === $password) {
    $password_valid = true;
}
// 方式2：如果密码是MD5存储
elseif (md5($password) === $zj['pass']) {
    $password_valid = true;
}
// 方式3：如果密码使用password_hash
elseif (password_verify($password, $zj['pass'])) {
    $password_valid = true;
}

if (!$password_valid) {
    header('Location: /user/login.php?msg=password_error');
    exit;
}

// 检查用户状态
if ($zj['zt'] == '已过期' || $zj['zt'] == '已禁用') {
    header('Location: /user/login.php?msg=user_disabled');
    exit;
}

// 重新生成会话ID，确保完全新的会话
session_regenerate_id(true);

// 清除所有旧的会话变量
$_SESSION = array();

// 生成与正常登录相同的token格式
global $password_hash;
$session = md5($zj['user'] . $zj['pass'] . $password_hash);
$user_token = authcode("{$zj['user']}\t{$session}", 'ENCODE', SYS_KEY);

// 设置cookie - 与正常登录完全一致
setcookie('user_token', $user_token, time() + 86400 * 30, '/');
setcookie('user_id', $zj['id'], time() + 86400 * 30, '/');
setcookie('username', $zj['user'], time() + 86400 * 30, '/');

// 设置会话变量
$_SESSION['user_token'] = $user_token;
$_SESSION['user_id'] = $zj['id'];
$_SESSION['user_name'] = $zj['user'];

// 转义用户ID防止SQL注入
$user_id_escaped = $DB->escape($zj['id']);

// 更新最后登录时间
$DB->query("UPDATE `zj` SET `last_login_time` = NOW() WHERE `id` = '{$user_id_escaped}'");

// 记录登录日志
logjl($zj['user'], '自动登录', '魔方财务自动登录成功', true);

// 跳转到用户中心
header('Location: /user/index.php');
exit;
