/** * 认证 API——脚手架阶段(Phase 3 Task 2)的开发桩。 * * 后端真实端点为 /api/platform/auth/*(登录 / 用户信息 / 改密), * Task 3 对接真实登录时将本文件替换为真实请求。 * * 桩行为: * - fetchLogin:开发态直接发放本地会话令牌,不发起网络请求; * - fetchGetUserInfo:按登录页的角色调试开关(sessionStorage * `all-kefu-dev-role`:super | tenant)返回用户信息,用于演示 * 纯前端菜单权限控制——super 全量菜单,tenant 隐藏 * 租户管理 / 平台设置(见 router/modules/*.ts 的 meta.roles); * - 生产构建(非 DEV)下调用将抛出显式错误,避免带桩上线。 */ const DEV_ROLE_KEY = 'all-kefu-dev-role' export type DevStubRole = 'super' | 'tenant' export function setDevStubRole(role: DevStubRole) { sessionStorage.setItem(DEV_ROLE_KEY, role) } export function getDevStubRole(): DevStubRole { return sessionStorage.getItem(DEV_ROLE_KEY) === 'tenant' ? 'tenant' : 'super' } function assertStubAllowed(): void { if (!import.meta.env.DEV) { throw new Error('认证 API 尚未对接真实后端(Task 3 实现),生产构建不可用') } } /** * 登录(开发桩:任意账号密码直接获得开发会话) * @param params 登录参数 * @returns 登录响应 */ export function fetchLogin(params: Api.Auth.LoginParams) { assertStubAllowed() void params return Promise.resolve({ token: 'dev-stub-token', refreshToken: '' }) } /** * 获取用户信息(开发桩:角色取自登录页调试开关) * @returns 用户信息 */ export function fetchGetUserInfo() { assertStubAllowed() const role = getDevStubRole() return Promise.resolve({ buttons: [], roles: [role], userId: 1, userName: role === 'super' ? '平台超管(调试)' : '租户管理员(调试)', email: 'dev@all-kefu.local' }) }