use-current-user.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { defineStore } from 'pinia';
  2. import { login, getInfo } from '../../apis/login';
  3. import { kuky_Authorization } from '../storage';
  4. /**
  5. * 当前登录的用户信息
  6. */
  7. export const useCurrentUserStore = defineStore('current_user', {
  8. state: () => {
  9. return {
  10. name: 'Jack',
  11. token_type: '',
  12. token: kuky_Authorization.get(),
  13. username: '',
  14. nickname: '',
  15. dept: [],
  16. roles: [],
  17. permissions: [],
  18. user: {}
  19. };
  20. },
  21. actions: {
  22. updateName(name) {
  23. this.name = name;
  24. },
  25. toLogin(data) {
  26. const { username, password } = data;
  27. return new Promise((resolve, reject) => {
  28. login({ username, password })
  29. .then((res) => {
  30. if (res.code == 200 && res.data.access_token.length) {
  31. this.token = res.data.access_token;
  32. this.token_type = res.data.token_type;
  33. this.username = res.data.username;
  34. this.nickname = res.data.nickname;
  35. kuky_Authorization.set(res.data.access_token);
  36. resolve(res.msg);
  37. /**
  38. * 获取用户信息
  39. * 暂时先在这里去调用,后续可以考虑放在路由拦截中去调用
  40. */
  41. this.getInfo();
  42. } else {
  43. reject(res.msg);
  44. }
  45. })
  46. .catch((err) => {
  47. reject(err);
  48. });
  49. });
  50. },
  51. getInfo() {
  52. return new Promise((resolve, reject) => {
  53. getInfo()
  54. .then((res) => {
  55. if (res.code == 200) {
  56. this.dept = res.data.dept;
  57. if (res.roles && res.roles.length > 0) {
  58. // 验证返回的roles是否是一个非空数组
  59. this.roles = res.roles;
  60. this.permissions = res.permissions;
  61. } else {
  62. this.roles = ['ROLE_DEFAULT'];
  63. }
  64. resolve(res.msg);
  65. } else {
  66. reject(res.msg);
  67. }
  68. })
  69. .catch((err) => {
  70. reject(err);
  71. });
  72. });
  73. }
  74. }
  75. });