const TOKEN_KEY = 'app_token' const USER_KEY = 'app_user' const TENANT_KEY = 'app_tenant_name' const TID_KEY = 'app_tid' const REFRESH_KEY = 'app_refresh_token' const SID_KEY = 'app_sid' /** 是否启用统一认证:.env 中配置 VITE_AUTH_MODE=sso */ export function isSSOEnabled() { try { return (typeof import.meta !== 'undefined' && import.meta.env && import.meta.env.VITE_AUTH_MODE) === 'sso' } catch (e) { return false } } /** 统一认证:保存令牌与会话信息 */ export function setAuthTokens(data = {}) { if (data.access_token) setToken(data.access_token) if (data.refresh_token) uni.setStorageSync(REFRESH_KEY, data.refresh_token) if (data.sid) uni.setStorageSync(SID_KEY, data.sid) } export function getRefreshToken() { return uni.getStorageSync(REFRESH_KEY) || '' } export function getSid() { return uni.getStorageSync(SID_KEY) || '' } export function setTid(tid) { uni.setStorageSync(TID_KEY, tid || '') } export function getTid() { return Number(uni.getStorageSync(TID_KEY) || 0) } const REMEMBER_KEY = 'app_remember_me' const REMEMBER_TENANT_KEY = 'app_remember_tenant' const REMEMBER_ACCOUNT_KEY = 'app_remember_account' const REMEMBER_PASSWORD_KEY = 'app_remember_password' export function setToken(token) { uni.setStorageSync(TOKEN_KEY, token || '') } export function getToken() { return uni.getStorageSync(TOKEN_KEY) || '' } export function setUser(user) { uni.setStorageSync(USER_KEY, user || null) } export function getUser() { return uni.getStorageSync(USER_KEY) || null } export function setTenantName(name) { uni.setStorageSync(TENANT_KEY, name || '') } export function getTenantName() { return uni.getStorageSync(TENANT_KEY) || '' } export function isLoggedIn() { return !!getToken() } export function logout() { uni.removeStorageSync(TOKEN_KEY) uni.removeStorageSync(USER_KEY) uni.removeStorageSync(REFRESH_KEY) uni.removeStorageSync(SID_KEY) } /** 是否开启记住账号登录信息 */ export function isRememberLogin() { return uni.getStorageSync(REMEMBER_KEY) === '1' } /** * 读取记住的账号登录信息。 * 安全说明:不再保存/回填密码,仅记住租户名与账号。 */ export function getRememberLogin() { if (!isRememberLogin()) { return { rememberMe: false, tenantName: '', account: '' } } return { rememberMe: true, tenantName: uni.getStorageSync(REMEMBER_TENANT_KEY) || '', account: uni.getStorageSync(REMEMBER_ACCOUNT_KEY) || '' } } /** 保存账号登录信息(租户、账号;不含密码) */ export function saveRememberLogin({ tenantName = '', account = '' } = {}) { uni.setStorageSync(REMEMBER_KEY, '1') uni.setStorageSync(REMEMBER_TENANT_KEY, tenantName) uni.setStorageSync(REMEMBER_ACCOUNT_KEY, account) // 历史版本可能已落盘明文密码,这里一并清理 uni.removeStorageSync(REMEMBER_PASSWORD_KEY) } /** 清除记住的账号登录信息 */ export function clearRememberLogin() { uni.removeStorageSync(REMEMBER_KEY) uni.removeStorageSync(REMEMBER_TENANT_KEY) uni.removeStorageSync(REMEMBER_ACCOUNT_KEY) uni.removeStorageSync(REMEMBER_PASSWORD_KEY) } /** * 登录成功写入 token 与用户信息 * @param {{ token?: string, user?: object, nickname?: string, phone?: string, account?: string, name?: string, avatar?: string, id?: number|string }} payload */ export function loginSuccess(payload = {}) { const token = payload.token || payload.access_token || '' if (token) { setToken(token) } const rawUser = payload.user || payload const user = { id: rawUser.id, account: rawUser.account || '', name: rawUser.name || '', nickname: rawUser.nickname || rawUser.name || rawUser.account || '云泽用户', avatar: rawUser.avatar || '', phone: rawUser.phone || payload.phone || '', tid: rawUser.tid, rid: rawUser.rid, role_name: rawUser.role_name || '', ...rawUser } // 保证 nickname 可用 if (!user.nickname) { user.nickname = user.name || user.account || '云泽用户' } setUser(user) return user }