Files
CloudFlare-ImgBed/functions/api/auth/sessionCheck.js
T
MarSeventh 1e96f2e27b refactor: unify auth logic into authCore with authScope parameter
- Extract shared authentication logic into utils/auth/authCore.js
- Replace enableBasicAuth/enableAuthCode flags with clear authScope enum (ADMIN/USER/EITHER)
- Move all auth-related files into utils/auth/ subdirectory
- Eliminate duplicated admin auth logic between _middleware.js and dualAuth.js
- Fix: user session no longer grants access to admin-only endpoints
- Fix: dualAuth no longer bypasses authCode when admin is not configured
- Update all 17 import references across the codebase
- Preserve original function signatures (userAuthCheck, dualAuthCheck) for zero caller changes
2026-04-18 13:24:53 +08:00

43 lines
1.4 KiB
JavaScript

import { validateAnySession } from "../../utils/auth/sessionManager.js";
import { fetchSecurityConfig } from "../../utils/sysConfig.js";
/**
* 会话检查接口
* 用于前端路由守卫检查当前会话是否有效
* 同时返回各端是否需要认证
*/
export async function onRequestGet(context) {
const { request, env } = context;
// 读取安全配置,判断是否需要认证
const securityConfig = await fetchSecurityConfig(env);
const adminUsername = securityConfig.auth.admin.adminUsername;
const userAuthCode = securityConfig.auth.user.authCode;
const adminRequired = !!(adminUsername && adminUsername.trim());
const userRequired = !!(userAuthCode && userAuthCode.trim());
// 检查会话
const sessionResult = await validateAnySession(env, request);
if (sessionResult.valid) {
return new Response(JSON.stringify({
valid: true,
authType: sessionResult.session.authType,
adminRequired,
userRequired,
}), {
status: 200,
headers: { 'Content-Type': 'application/json' },
});
}
return new Response(JSON.stringify({
valid: false,
adminRequired,
userRequired,
}), {
status: 200, // 不再返回 401,让前端根据字段判断
headers: { 'Content-Type': 'application/json' },
});
}