97 lines
1.7 KiB
JavaScript
97 lines
1.7 KiB
JavaScript
/**
|
|
* 登录状态管理
|
|
* Token 本地存储、登录态检查、路由守卫
|
|
*/
|
|
|
|
const TOKEN_KEY = 'token'
|
|
const USER_INFO_KEY = 'userInfo'
|
|
const ROLE_KEY = 'userRole' // 'user' | 'merchant'
|
|
|
|
/**
|
|
* 保存登录信息
|
|
* @param {string} token - JWT Token
|
|
* @param {Object} userInfo - 用户信息
|
|
*/
|
|
export function setLoginInfo(token, userInfo) {
|
|
uni.setStorageSync(TOKEN_KEY, token)
|
|
uni.setStorageSync(USER_INFO_KEY, JSON.stringify(userInfo))
|
|
}
|
|
|
|
/**
|
|
* 获取 Token
|
|
* @returns {string|null}
|
|
*/
|
|
export function getToken() {
|
|
return uni.getStorageSync(TOKEN_KEY) || null
|
|
}
|
|
|
|
/**
|
|
* 获取用户信息
|
|
* @returns {Object|null}
|
|
*/
|
|
export function getUserInfo() {
|
|
const info = uni.getStorageSync(USER_INFO_KEY)
|
|
if (!info) return null
|
|
try {
|
|
return JSON.parse(info)
|
|
} catch {
|
|
return null
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 检查是否已登录
|
|
* @returns {boolean}
|
|
*/
|
|
export function isLoggedIn() {
|
|
return !!getToken()
|
|
}
|
|
|
|
/**
|
|
* 设置用户角色
|
|
* @param {'user'|'merchant'} role
|
|
*/
|
|
export function setRole(role) {
|
|
uni.setStorageSync(ROLE_KEY, role)
|
|
}
|
|
|
|
/**
|
|
* 获取用户角色
|
|
* @returns {'user'|'merchant'|null}
|
|
*/
|
|
export function getRole() {
|
|
return uni.getStorageSync(ROLE_KEY) || null
|
|
}
|
|
|
|
/**
|
|
* 清除登录状态(退出登录)
|
|
*/
|
|
export function clearAuth() {
|
|
uni.removeStorageSync(TOKEN_KEY)
|
|
uni.removeStorageSync(USER_INFO_KEY)
|
|
uni.removeStorageSync(ROLE_KEY)
|
|
}
|
|
|
|
/**
|
|
* 登录态检查,未登录则跳转登录页
|
|
* @returns {boolean} 是否已登录
|
|
*/
|
|
export function checkLogin() {
|
|
if (!isLoggedIn()) {
|
|
uni.navigateTo({ url: '/pages/login/index' })
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
export default {
|
|
setLoginInfo,
|
|
getToken,
|
|
getUserInfo,
|
|
isLoggedIn,
|
|
setRole,
|
|
getRole,
|
|
clearAuth,
|
|
checkLogin
|
|
}
|