user.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { defineStore } from 'pinia'
  2. import { UserState } from '@/types'
  3. import { ls } from '@/utils'
  4. import { login, logout } from '@/api/login'
  5. import router, { resetRouter } from '@/router'
  6. import md5 from 'js-md5'
  7. const useUserStore = defineStore({
  8. id: 'user',
  9. state: (): UserState => ({
  10. token: ls.get('token') || '',
  11. userInfo: ls.get('userInfo') || {},
  12. // nickname: '',
  13. // avatar: '',
  14. roles: [],
  15. perms: [],
  16. loginQuery: {},
  17. isLogin: false
  18. }),
  19. actions: {
  20. async RESET_STATE() {
  21. this.$reset()
  22. },
  23. /**
  24. * 用户登录请求
  25. * @param params 登录用户信息
  26. * username: 用户名
  27. * password: 密码 -> md5加密
  28. */
  29. login(params: { username: string; password: string }) {
  30. const _params = {
  31. ...params,
  32. password: md5(params.password)
  33. }
  34. return login(_params).then((data: any) => {
  35. const { token, userInfo } = data || {}
  36. ls.set('token', token)
  37. this.token = token
  38. // 用户信息
  39. ls.set('userInfo', userInfo)
  40. this.userInfo = userInfo
  41. const { redirect, ...query } = (this.loginQuery || {}) as any
  42. // debugger
  43. const path = redirect || '/'
  44. router.push({ path, query })
  45. return data
  46. })
  47. },
  48. /**
  49. * 获取用户信息(昵称、头像、角色集合、权限集合)
  50. */
  51. getUserInfo() {
  52. /*// 获取菜单权限
  53. getMenuPermissions().then(res => {
  54. console.error(res, 'res.......')
  55. })*/
  56. return new Promise(resolve => {
  57. console.log('fetch 获取用户信息')
  58. this.isLogin = true // user/get
  59. resolve(true)
  60. })
  61. // return getUserInfo()
  62. // .then(({ data }) => {
  63. // if (!data) {
  64. // return console.error('Verification failed, please Login again.')
  65. // }
  66. // const { nickname, avatar, roles, perms } = data
  67. // if (!roles || roles.length <= 0) {
  68. // console.error('getUserInfo: roles must be a non-null array!')
  69. // }
  70. // this.nickname = nickname
  71. // this.avatar = avatar
  72. // this.roles = roles
  73. // this.perms = perms
  74. // })
  75. },
  76. /**
  77. * 注销
  78. */
  79. logout() {
  80. return new Promise(resolve => {
  81. ls.remove('token')
  82. this.RESET_STATE()
  83. resetRouter()
  84. return resolve(true)
  85. })
  86. // return logout()
  87. // .then(() => {
  88. // ls.remove('token')
  89. // this.RESET_STATE()
  90. // resetRouter()
  91. // })
  92. },
  93. /**
  94. * 清除 Token
  95. */
  96. resetToken() {
  97. return new Promise(resolve => {
  98. ls.remove('token')
  99. this.RESET_STATE()
  100. resolve(null)
  101. })
  102. }
  103. }
  104. })
  105. export default useUserStore