<?php
session_start();

require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/simple/db.php';
require_once __DIR__ . '/simple/system_settings.php';
require_once __DIR__ . '/simple/session.php';
require_once __DIR__ . '/simple/user.php';
require_once __DIR__ . '/simple/permission.php';
require_once __DIR__ . '/simple/pterodactyl_db.php';
require_once __DIR__ . '/simple/pterodactyl.php';
require_once __DIR__ . '/simple/pterodactyl_servers.php';
require_once __DIR__ . '/simple/approval.php';
require_once __DIR__ . '/simple/work_record.php';
require_once __DIR__ . '/simple/cabinet.php';
require_once __DIR__ . '/simple/survey.php';
require_once __DIR__ . '/simple/notice.php';

$action = $_GET['action'] ?? 'home';

$permission_map = [
    'home' => '',
    'users' => 'user.manage',
    'user_add' => 'user.manage',
    'user_edit' => 'user.manage',
    'permissions' => 'permission.manage',
    'system_settings' => 'system.setting',
];

if ($action === 'login') {
    if (is_logged_in()) {
        header('Location: index.php?action=home');
        exit;
    }
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $username = $_POST['username'] ?? '';
        $password = $_POST['password'] ?? '';
        
        $user = auth_user($username, $password);
        
        if ($user) {
            set_session_user($user);
            header('Location: index.php?action=home');
            exit;
        } else {
            $error = '用户名或密码错误';
        }
    }
    
    include __DIR__ . '/simple/views/login.php';
    
} elseif ($action === 'logout') {
    clear_session_user();
    header('Location: index.php?action=login');
    exit;
    
} elseif ($action === 'home') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/home.php';

} elseif ($action === 'password_change') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/password_change.php';

} elseif ($action === 'users') {
    require_auth('user.manage');
    $user = get_session_user();
    
    if (isset($_GET['delete']) && (int)$_GET['delete'] > 1) {
        if (!check_user_access((int)$user['id'], 'permission.manage')) {
            http_response_code(403);
            exit('无权删除用户');
        }
        delete_user((int)$_GET['delete']);
        header('Location: index.php?action=users&msg=deleted');
        exit;
    }
    
    include __DIR__ . '/simple/views/users.php';

} elseif ($action === 'user_add') {
    require_auth('user.manage');
    $user = get_session_user();
    include __DIR__ . '/simple/views/user_add.php';

} elseif ($action === 'user_edit') {
    require_auth('user.manage');
    $user = get_session_user();
    include __DIR__ . '/simple/views/user_edit.php';

} elseif ($action === 'permissions') {
    require_auth('permission.manage');
    $user = get_session_user();
    include __DIR__ . '/simple/views/permissions.php';

} elseif ($action === 'system_settings') {
    require_auth('system.setting');
    $user = get_session_user();
    include __DIR__ . '/simple/views/system_settings.php';

} elseif ($action === 'pterodactyl_versions') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_versions.php';

} elseif ($action === 'pterodactyl_version_add') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_version_form.php';

} elseif ($action === 'pterodactyl_version_edit') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_version_form.php';

} elseif ($action === 'my_versions') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/my_versions.php';

} elseif ($action === 'pterodactyl_servers') {
    require_auth('ptero.server.view');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_servers.php';

} elseif ($action === 'pterodactyl_server_config') {
    require_auth('ptero.server.configure');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_server_config.php';

} elseif ($action === 'pterodactyl_server_create') {
    require_auth('ptero.server.create');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_server_create.php';

} elseif ($action === 'pterodactyl_server_create_logs') {
    require_auth('ptero.server.view');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_server_create_logs.php';

} elseif ($action === 'pterodactyl_server_create_log_view') {
    require_auth('ptero.server.view');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_server_create_log_view.php';

} elseif ($action === 'pterodactyl_cron') {
    require_auth('ptero.server.batch');
    $user = get_session_user();
    include __DIR__ . '/simple/views/pterodactyl_cron.php';

} elseif ($action === 'approvals') {
    require_auth('permission.manage');
    $user = get_session_user();
    include __DIR__ . '/simple/views/approvals.php';

} elseif ($action === 'work_records') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/work_records.php';

} elseif ($action === 'work_record_add') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/work_record_form.php';

} elseif ($action === 'work_record_edit') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/work_record_form.php';

} elseif ($action === 'work_record_view') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/work_record_view.php';

} elseif ($action === 'cabinets') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/cabinets.php';

} elseif ($action === 'cabinet_add') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/cabinet_form.php';

} elseif ($action === 'cabinet_edit') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/cabinet_form.php';

} elseif ($action === 'cabinet_view') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/cabinet_view.php';

} elseif ($action === 'servers') {
    require_auth('');
    $user = get_session_user();
    
    if (isset($_GET['status_change']) && isset($_GET['id']) && (int)$_GET['id'] > 0) {
        $newStatus = (int)($_GET['status'] ?? 0);
        update_server_status((int)$_GET['id'], $newStatus, $user['id']);
        header('Location: index.php?action=server_view&id=' . (int)$_GET['id'] . '&msg=status_updated');
        exit;
    }
    
    include __DIR__ . '/simple/views/servers.php';

} elseif ($action === 'server_add') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/server_form.php';

} elseif ($action === 'server_edit') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/server_form.php';

} elseif ($action === 'server_view') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/server_view.php';

} elseif ($action === 'notices') {
    require_auth('notice.view');
    $user = get_session_user();
    include __DIR__ . '/simple/views/notices.php';

} elseif ($action === 'notice_edit') {
    require_auth('notice.manage');
    $user = get_session_user();
    include __DIR__ . '/simple/views/notice_edit.php';

} elseif ($action === 'notice_view') {
    require_auth('notice.view');
    $user = get_session_user();
    include __DIR__ . '/simple/views/notice_view.php';

} elseif ($action === 'notice_groups') {
    require_auth('notice.manage');
    $user = get_session_user();
    include __DIR__ . '/simple/views/notice_groups.php';

} elseif ($action === 'notice_api_doc') {
    require_auth('notice.api.doc');
    $user = get_session_user();
    include __DIR__ . '/simple/views/notice_api_doc.php';

} elseif ($action === 'survey_manage') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/survey_manage.php';

} elseif ($action === 'survey_edit') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/survey_edit.php';

} elseif ($action === 'survey_stats') {
    require_auth('');
    $user = get_session_user();
    include __DIR__ . '/simple/views/survey_stats.php';

} else {
    header('Location: index.php?action=home');
    exit;
}

function require_auth($requiredPermission) {
    if (!is_logged_in()) {
        header('Location: index.php?action=login');
        exit;
    }
    
    $userId = get_session_user_id();
    
    if (!check_user_access($userId, $requiredPermission)) {
        header('Content-Type: text/html; charset=utf-8');
        echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>无权限</title>
        <style>body{font-family:-apple-system,sans-serif;display:flex;justify-content:center;align-items:center;min-height:100vh;background:#f0f2f5;margin:0;}.box{background:#fff;padding:40px;border-radius:8px;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.1);}.icon{font-size:48px;margin-bottom:16px;}h2{color:#333;font-size:20px;margin-bottom:8px;}p{color:#999;font-size:14px;margin-bottom:20px;}a{display:inline-block;padding:10px 24px;background:#1890ff;color:#fff;text-decoration:none;border-radius:4px;}</style></head><body><div class="box"><div class="icon">🔒</div><h2>访问被拒绝</h2><p>您没有权限访问此页面，请联系管理员分配相应权限。</p><a href="index.php?action=home">返回首页</a></div></body></html>';
        exit;
    }
}
