Files
ai-kefu-admin/admin/src/api/auth.ts
T

61 lines
1.9 KiB
TypeScript
Raw Normal View History

/**
* 认证 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<Api.Auth.LoginResponse>({
token: 'dev-stub-token',
refreshToken: ''
})
}
/**
* 获取用户信息(开发桩:角色取自登录页调试开关)
* @returns 用户信息
*/
export function fetchGetUserInfo() {
assertStubAllowed()
const role = getDevStubRole()
return Promise.resolve<Api.Auth.UserInfo>({
buttons: [],
roles: [role],
userId: 1,
userName: role === 'super' ? '平台超管(调试)' : '租户管理员(调试)',
email: 'dev@all-kefu.local'
})
}