61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
|
|
/**
|
|||
|
|
* 认证 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'
|
|||
|
|
})
|
|||
|
|
}
|