user.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import request from "../../api/request.js"
  2. import menu from "../../menu/menu.js"
  3. import { login, logout, getInfo } from '@/api/user';
  4. import { getToken, setToken, removeToken } from '@/utils/auth';
  5. import router, { constantRoutes, resetRouter } from '@/router';
  6. const getDefaultState = () => {
  7. return {
  8. token: getToken(),
  9. name: '',
  10. avatar: '',
  11. menu: [],//添加一个数组用来装菜单列表
  12. ifchange: false
  13. };
  14. };
  15. const state = getDefaultState();
  16. const mutations = {
  17. RESET_STATE: state => {
  18. Object.assign(state, getDefaultState());
  19. },
  20. SET_TOKEN: (state, token) => {
  21. state.token = token;
  22. },
  23. SET_NAME: (state, name) => {
  24. state.name = name;
  25. },
  26. SET_AVATAR: (state, avatar) => {
  27. state.avatar = avatar;
  28. },
  29. SET_MENU: (state,menu) =>{
  30. state.menu = menu;
  31. state.ifchange = true
  32. }
  33. };
  34. const actions = {
  35. // user login
  36. login({ commit }, userInfo) {
  37. const { username, password } = userInfo;
  38. return new Promise((resolve, reject) => {
  39. login({ username: username.trim(), password: password })
  40. .then(response => {
  41. const { data } = response;
  42. commit('SET_TOKEN', data.token);
  43. setToken(data.token);
  44. // menu.getMenu(); //获取权限菜单
  45. resolve();
  46. })
  47. .catch(error => {
  48. reject(error);
  49. });
  50. });
  51. },
  52. modifyMenu({ commit },menu){
  53. return new Promise(resolve => {
  54. commit('SET_MENU',menu)
  55. resolve()
  56. })
  57. },
  58. // get user info
  59. getInfo({ commit, state }) {
  60. return new Promise((resolve, reject) => {
  61. getInfo(state.token)
  62. .then(response => {
  63. const { data } = response;
  64. if (!data) {
  65. return reject('Verification failed, please Login again.');
  66. }
  67. const { name, avatar } = data;
  68. commit('SET_NAME', name);
  69. commit('SET_AVATAR', avatar);
  70. resolve(data);
  71. })
  72. .catch(error => {
  73. reject(error);
  74. });
  75. });
  76. },
  77. // user logout
  78. logout({ commit, state }) {
  79. return new Promise((resolve, reject) => {
  80. logout(state.token)
  81. .then(() => {
  82. // 清除缓存的权限菜单
  83. sessionStorage.removeItem("route")
  84. removeToken(); // must remove token first
  85. resetRouter();
  86. commit('RESET_STATE');
  87. resolve();
  88. })
  89. .catch(error => {
  90. reject(error);
  91. });
  92. });
  93. },
  94. // remove token
  95. resetToken({ commit }) {
  96. return new Promise(resolve => {
  97. // 清除缓存的权限菜单
  98. sessionStorage.removeItem("route")
  99. removeToken(); // must remove token first
  100. commit('RESET_STATE');
  101. resolve();
  102. });
  103. },
  104. };
  105. export default {
  106. namespaced: true,
  107. state,
  108. mutations,
  109. actions,
  110. };