user.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { storage, href } from "cl-admin/utils";
  2. // 用户信息
  3. let info = storage.get("userInfo") || {};
  4. // 授权标识
  5. let token = storage.get("token") || null;
  6. export default {
  7. state: {
  8. token,
  9. info
  10. },
  11. getters: {
  12. userInfo: (state) => state.info,
  13. token: (state) => state.token
  14. },
  15. actions: {
  16. // 用户登录
  17. userLogin({ commit }, form) {
  18. return this.$service.open.userLogin(form).then((res) => {
  19. commit("SET_TOKEN", res);
  20. return res;
  21. });
  22. },
  23. // 用户退出
  24. userLogout({ dispatch }) {
  25. return new Promise((resolve) => {
  26. this.$service.common.userLogout().done(() => {
  27. dispatch("userRemove").then(() => {
  28. resolve();
  29. });
  30. });
  31. });
  32. },
  33. // 用户信息
  34. userInfo({ commit }) {
  35. return this.$service.common.userInfo().then((res) => {
  36. commit("SET_USERINFO", res);
  37. return res;
  38. });
  39. },
  40. // 用户移除
  41. userRemove({ commit }) {
  42. commit("CLEAR_USER");
  43. commit("CLEAR_TOKEN");
  44. commit("RESET_PROCESS");
  45. commit("SET_MENU_GROUP", []);
  46. commit("SET_VIEW_ROUTES", []);
  47. commit("SET_MENU_LIST", 0);
  48. },
  49. // 刷新token
  50. refreshToken({ commit, dispatch }) {
  51. return new Promise((resolve, reject) => {
  52. this.$service.open
  53. .refreshToken(storage.get("refreshToken"))
  54. .then((res) => {
  55. commit("SET_TOKEN", res);
  56. resolve(res.token);
  57. })
  58. .catch((err) => {
  59. dispatch("userRemove");
  60. href("/login");
  61. reject(err);
  62. });
  63. });
  64. }
  65. },
  66. mutations: {
  67. // 设置用户信息
  68. SET_USERINFO(state, val) {
  69. state.info = val;
  70. storage.set("userInfo", val);
  71. },
  72. // 设置授权标识
  73. SET_TOKEN(state, { token, expire, refreshToken, refreshExpire }) {
  74. // 请求的唯一标识
  75. state.token = token;
  76. storage.set("token", token, expire);
  77. // 刷新 token 的唯一标识
  78. storage.set("refreshToken", refreshToken, refreshExpire);
  79. },
  80. // 移除授权标识
  81. CLEAR_TOKEN(state) {
  82. state.token = null;
  83. storage.remove("token");
  84. storage.remove("refreshToken");
  85. },
  86. // 移除用户信息
  87. CLEAR_USER(state) {
  88. state.info = {};
  89. storage.remove("userInfo");
  90. }
  91. }
  92. };