user.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. localStorage.setItem('realname', data.realname)
  43. commit('SET_NAME', data.realname);
  44. commit('SET_TOKEN', data.token);
  45. setToken(data.token);
  46. // menu.getMenu(); //获取权限菜单
  47. resolve();
  48. })
  49. .catch(error => {
  50. reject(error);
  51. });
  52. });
  53. },
  54. modifyMenu({ commit },menu){
  55. return new Promise(resolve => {
  56. commit('SET_MENU',menu)
  57. resolve()
  58. })
  59. },
  60. // get user info
  61. getInfo({ commit, state }) {
  62. return new Promise((resolve, reject) => {
  63. getInfo(state.token)
  64. .then(response => {
  65. const { data } = response;
  66. if (!data) {
  67. return reject('Verification failed, please Login again.');
  68. }
  69. const { name, avatar } = data;
  70. commit('SET_NAME', name);
  71. commit('SET_AVATAR', avatar);
  72. resolve(data);
  73. })
  74. .catch(error => {
  75. reject(error);
  76. });
  77. });
  78. },
  79. // user logout
  80. logout({ commit, state }) {
  81. return new Promise((resolve, reject) => {
  82. logout(state.token)
  83. .then(() => {
  84. // 清除缓存的权限菜单
  85. sessionStorage.removeItem("route")
  86. removeToken(); // must remove token first
  87. resetRouter();
  88. commit('RESET_STATE');
  89. resolve();
  90. })
  91. .catch(error => {
  92. reject(error);
  93. });
  94. });
  95. },
  96. // remove token
  97. resetToken({ commit }) {
  98. return new Promise(resolve => {
  99. // 清除缓存的权限菜单
  100. sessionStorage.removeItem("route")
  101. removeToken(); // must remove token first
  102. commit('RESET_STATE');
  103. resolve();
  104. });
  105. },
  106. };
  107. export default {
  108. namespaced: true,
  109. state,
  110. mutations,
  111. actions,
  112. };