第 5 阶段:纠纷、通知与后台-2

This commit is contained in:
yml
2026-05-22 16:50:33 +08:00
parent 99f9df7bcd
commit aee3455e9a
22 changed files with 519 additions and 36 deletions
+50
View File
@@ -0,0 +1,50 @@
import { defineStore } from 'pinia'
import { fetchAdminMe, loginAdmin, type AdminUser } from '@/api/adminAuth'
export const useAdminSessionStore = defineStore('adminSession', {
state: () => ({
token: localStorage.getItem('admin_access_token') || '',
refreshToken: localStorage.getItem('admin_refresh_token') || '',
adminId: Number(localStorage.getItem('admin_id') || 0),
username: localStorage.getItem('admin_username') || '',
nickname: '',
}),
actions: {
async login(username: string, password: string) {
const result = await loginAdmin(username, password)
this.applySession(result.admin, result.tokens.access_token, result.tokens.refresh_token)
return result
},
async loadMe() {
const admin = await fetchAdminMe()
this.applyAdmin(admin)
return admin
},
logout() {
this.token = ''
this.refreshToken = ''
this.adminId = 0
this.username = ''
this.nickname = ''
localStorage.removeItem('admin_access_token')
localStorage.removeItem('admin_refresh_token')
localStorage.removeItem('admin_id')
localStorage.removeItem('admin_username')
},
applySession(admin: AdminUser, accessToken: string, refreshToken: string) {
this.token = accessToken
this.refreshToken = refreshToken
localStorage.setItem('admin_access_token', accessToken)
localStorage.setItem('admin_refresh_token', refreshToken)
this.applyAdmin(admin)
},
applyAdmin(admin: AdminUser) {
this.adminId = admin.id
this.username = admin.username
this.nickname = admin.nickname
localStorage.setItem('admin_id', String(admin.id))
localStorage.setItem('admin_username', admin.username)
},
},
})