Files
nl-game/src/stores/user.js
李琦 cd1ab90013 初始化
需要注意的是饥荒不够完善:动作、手持工具、细节交互、系统逻辑
2026-08-15 07:24:34 +08:00

51 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 用户 Store登录态、积分余额游戏结算后实时刷新
import { defineStore } from 'pinia'
import http from '../api/http'
export const useUserStore = defineStore('user', {
state: () => ({
token: localStorage.getItem('token') || '',
user: JSON.parse(localStorage.getItem('user') || 'null'),
}),
getters: {
// 是否已登录
loggedIn: (s) => !!s.token,
// 是否超级管理员
isAdmin: (s) => s.user?.role === 1,
},
actions: {
// 保存登录结果
setLogin({ token, user }) {
this.token = token
this.user = user
localStorage.setItem('token', token)
localStorage.setItem('user', JSON.stringify(user))
},
// 更新用户信息(积分变化、改资料后)
setUser(user) {
this.user = user
localStorage.setItem('user', JSON.stringify(user))
},
// 只更新积分余额(结算响应里带了最新余额)
setPoints(points) {
if (this.user) {
this.user.points = points
localStorage.setItem('user', JSON.stringify(this.user))
}
},
// 从服务端刷新最新资料
async refresh() {
if (!this.token) return
const user = await http.get('/user/profile')
this.setUser(user)
},
// 退出登录
logout() {
this.token = ''
this.user = null
localStorage.removeItem('token')
localStorage.removeItem('user')
},
},
})