/**
|
* 认证相关工具函数
|
*/
|
|
const TOKEN_KEY = 'auth_token'
|
const USER_INFO_KEY = 'user_info'
|
|
// 用户信息接口定义
|
export interface UserInfo {
|
userId: string
|
name: string
|
phone: string
|
userType: string // 主要角色类型:employee > judge > player
|
employee?: {
|
id: string
|
name: string
|
roleId: string
|
description?: string
|
}
|
judge?: {
|
id: string
|
name: string
|
title?: string
|
company?: string
|
description?: string
|
}
|
player?: {
|
id: string
|
name: string
|
phone?: string
|
description?: string
|
auditState?: number
|
}
|
}
|
|
// Token 管理 - 使用 localStorage 持久化存储
|
export function setToken(token: string): void {
|
localStorage.setItem(TOKEN_KEY, token)
|
}
|
|
export function getToken(): string | null {
|
return localStorage.getItem(TOKEN_KEY)
|
}
|
|
export function removeToken(): void {
|
localStorage.removeItem(TOKEN_KEY)
|
}
|
|
// 用户信息管理 - 使用 localStorage 持久化存储
|
export function setUserInfo(userInfo: UserInfo): void {
|
localStorage.setItem(USER_INFO_KEY, JSON.stringify(userInfo))
|
}
|
|
export function getUserInfo(): UserInfo | null {
|
const userInfoStr = localStorage.getItem(USER_INFO_KEY)
|
if (userInfoStr) {
|
try {
|
return JSON.parse(userInfoStr)
|
} catch (error) {
|
console.error('解析用户信息失败:', error)
|
removeUserInfo()
|
}
|
}
|
return null
|
}
|
|
export function removeUserInfo(): void {
|
localStorage.removeItem(USER_INFO_KEY)
|
}
|
|
// 登录状态检查
|
export function isLoggedIn(): boolean {
|
const token = getToken()
|
const userInfo = getUserInfo()
|
return !!(token && userInfo)
|
}
|
|
// 清除所有认证数据
|
export function clearAuth(): void {
|
removeToken()
|
removeUserInfo()
|
}
|
|
// 获取当前用户显示名称(优先级:employee > judge > player)
|
export function getCurrentUserDisplayName(): string {
|
const userInfo = getUserInfo()
|
if (!userInfo) return '未知用户'
|
|
// 根据角色优先级返回对应的名称
|
if (userInfo.employee) {
|
return userInfo.employee.name
|
} else if (userInfo.judge) {
|
return userInfo.judge.name
|
} else if (userInfo.player) {
|
return userInfo.player.name
|
}
|
|
return userInfo.name || '未知用户'
|
}
|
|
// 获取当前用户角色
|
export function getCurrentUserRole(): string {
|
const userInfo = getUserInfo()
|
if (!userInfo) return ''
|
|
if (userInfo.employee) {
|
return userInfo.employee.description || '员工'
|
}
|
|
if (userInfo.judge) {
|
return userInfo.judge.title || '评委'
|
}
|
|
return userInfo.userType === 'employee' ? '员工' : '评委'
|
}
|
|
// 获取当前用户角色显示文本
|
export function getCurrentUserRoleText(): string {
|
const userInfo = getUserInfo()
|
const role = userInfo?.userType || 'unknown'
|
switch (role) {
|
case 'employee':
|
return '员工'
|
case 'judge':
|
return '评委'
|
case 'player':
|
return '学员'
|
default:
|
return '未知角色'
|
}
|
}
|
|
// 检查当前用户是否为员工
|
export function isEmployee(): boolean {
|
const userInfo = getUserInfo()
|
return userInfo?.userType === 'employee' && !!userInfo.employee
|
}
|
|
// 检查当前用户是否为评委
|
export function isJudge(): boolean {
|
const userInfo = getUserInfo()
|
return userInfo?.userType === 'judge' && !!userInfo.judge
|
}
|
|
// 检查当前用户是否为学员
|
export function isPlayer(): boolean {
|
const userInfo = getUserInfo()
|
return userInfo?.userType === 'player' && !!userInfo.player
|
}
|
|
// 获取当前用户的主要角色信息
|
export function getCurrentRoleInfo(): any {
|
const userInfo = getUserInfo()
|
if (!userInfo) return null
|
|
if (userInfo.employee) {
|
return userInfo.employee
|
} else if (userInfo.judge) {
|
return userInfo.judge
|
} else if (userInfo.player) {
|
return userInfo.player
|
}
|
|
return null
|
}
|