搭建用户体系

This commit is contained in:
2026-07-03 23:40:33 +08:00
parent 37a9f865ed
commit 2df19fcd02
40 changed files with 2622 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
import { UserInfo } from './api'
export function isAuthenticated(): boolean {
try {
return !!localStorage.getItem('access_token')
} catch {
return false
}
}
export function getStoredUser(): UserInfo | null {
try {
const raw = localStorage.getItem('user')
return raw ? (JSON.parse(raw) as UserInfo) : null
} catch {
return null
}
}
export function setStoredUser(user: UserInfo | null) {
if (user) {
localStorage.setItem('user', JSON.stringify(user))
} else {
localStorage.removeItem('user')
}
}
export function clearAuth() {
localStorage.removeItem('access_token')
localStorage.removeItem('user')
}
export type RoleName = 'system_admin' | 'admin' | 'user' | 'guest'
const ROLE_RANK: Record<RoleName, number> = {
system_admin: 3,
admin: 2,
user: 1,
guest: 0,
}
export function roleRank(role: RoleName): number {
return ROLE_RANK[role] ?? 0
}
export function roleLabel(role: RoleName): string {
switch (role) {
case 'system_admin':
return '系统管理员'
case 'admin':
return '管理员'
case 'user':
return '用户'
case 'guest':
return '游客'
}
}
export function canAccess(role: RoleName, allowed: RoleName[]): boolean {
return allowed.includes(role)
}
export function canManageUsers(role: RoleName): boolean {
return role === 'admin' || role === 'system_admin'
}
export function canDeleteUsers(role: RoleName): boolean {
return role === 'system_admin'
}