user.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import {defineStore} from 'pinia'
  2. export const useUserStore = defineStore({
  3. // id: 必须的,在所有 Store 中唯一
  4. id:'userState',
  5. // state: 返回对象的函数
  6. state: ()=>({
  7. // 登录token
  8. token:null,
  9. username:null,
  10. // 登录用户信息
  11. userInfo:{},
  12. // 角色
  13. roles:localStorage.roles?JSON.parse(localStorage.roles):[]
  14. }),
  15. getters: {},
  16. // 可以同步 也可以异步
  17. actions:{
  18. // 登录
  19. login(userInfo){
  20. const { token, username } = userInfo
  21. return new Promise(async (resolve, reject) => {
  22. this.token = token
  23. this.userInfo = userInfo
  24. this.username=username
  25. console.log(userInfo);
  26. // await this.getRoles()
  27. resolve(username)
  28. })
  29. },
  30. // 获取用户授权角色信息,实际应用中 可以通过token通过请求接口在这里获取用户信息
  31. getRoles(){
  32. return new Promise((resolve, reject) =>{
  33. // 获取权限列表 默认就是超级管理员,因为没有进行接口请求 写死
  34. this.roles = ['admin']
  35. localStorage.roles = JSON.stringify(this.roles)
  36. resolve(this.roles)
  37. } )
  38. },
  39. // 获取用户信息 ,如实际应用中 可以通过token通过请求接口在这里获取用户信息
  40. getInfo(roles) {
  41. return new Promise((resolve, reject) =>{
  42. this.roles = roles
  43. resolve(roles)
  44. } )
  45. },
  46. // 退出
  47. logout() {
  48. return new Promise((resolve, reject) => {
  49. this.token = null
  50. this.username=null
  51. this.userInfo = {}
  52. this.roles = []
  53. resolve(null)
  54. })
  55. },
  56. },
  57. // 进行持久化存储
  58. persist: {
  59. // 本地存储的名称
  60. key: "userState",
  61. //保存的位置
  62. storage: window.localStorage,//localstorage
  63. },
  64. })