user.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import { login, loginUp, getInfo } from '@/api/login'
  2. import { getToken, setToken, removeToken, setUserId, TokenKey } from '@/utils/auth'
  3. import { resetRouter } from '@/router'
  4. const getDefaultState = () => {
  5. return {
  6. token: getToken(),
  7. name: '',
  8. avatar: '',
  9. roles: [],
  10. firstLogin: getToken('FirstLogin') ? JSON.parse(getToken('FirstLogin')) : false,
  11. UserType: sessionStorage.getItem('UserType') ? sessionStorage.getItem('UserType') : '',
  12. UserId: sessionStorage.getItem('User_Id') ? sessionStorage.getItem('User_Id') : '',
  13. userPoewrList: sessionStorage.getItem('userAuthList') ? JSON.parse(sessionStorage.getItem('userAuthList')) : []
  14. }
  15. }
  16. const state = getDefaultState()
  17. const mutations = {
  18. RESET_STATE: (state) => {
  19. Object.assign(state, getDefaultState())
  20. },
  21. SET_TOKEN: (state, token) => {
  22. state.token = token
  23. },
  24. SET_NAME: (state, name) => {
  25. state.name = name
  26. },
  27. SET_UserId: (state, UserId) => {
  28. state.UserId = UserId
  29. },
  30. SET_UserType: (state, UserType) => {
  31. state.UserType = UserType
  32. sessionStorage.setItem('UserType', UserType)
  33. },
  34. SET_ROLES: (state, roles) => {
  35. state.roles = roles
  36. },
  37. SET_AVATAR: (state, avatar) => {
  38. state.avatar = avatar
  39. },
  40. SET_UserPoewrList: (state, arr) => {
  41. state.userPoewrList = arr
  42. },
  43. SET_LOGIN: (state, login) => {
  44. state.firstLogin = login
  45. },
  46. }
  47. const actions = {
  48. // user login
  49. login ({ commit }, userInfo) {
  50. return new Promise((resolve, reject) => {
  51. login(userInfo).then(res => {
  52. if (res.code == 0) {
  53. const { returnData } = res
  54. commit('SET_TOKEN', returnData.Token)
  55. commit('SET_UserType', returnData.UserType)
  56. commit('SET_UserId', returnData.UserId)
  57. commit('SET_LOGIN', returnData.FirstLogin)
  58. sessionStorage.setItem("userName", userInfo.LoginName);
  59. sessionStorage.setItem("token", returnData.Token);
  60. setToken(TokenKey, returnData.Token);
  61. setToken('FirstLogin', returnData.FirstLogin);
  62. setUserId(returnData.UserId)
  63. let nowDate = new Date();
  64. let oldDate = new Date(returnData.ValidTime);
  65. let diffTime = oldDate - nowDate;
  66. setTimeout(function () {
  67. resetToken()
  68. }, diffTime)
  69. resolve()
  70. } else {
  71. reject(res)
  72. }
  73. }).catch(error => {
  74. reject(error)
  75. })
  76. })
  77. },
  78. // get user info
  79. getInfo ({ commit, state }) {
  80. return new Promise((resolve, reject) => {
  81. let data = {
  82. roles: state.userPoewrList,
  83. introduction: '',
  84. avatar: '',
  85. firstLogin: state.firstLogin,
  86. name: sessionStorage.getItem("userName"),
  87. token: state.token
  88. }
  89. const { name, avatar, roles, firstLogin } = data
  90. commit('SET_LOGIN', firstLogin)
  91. commit('SET_NAME', name)
  92. commit('SET_AVATAR', avatar)
  93. commit('SET_ROLES', roles ? roles : ['admin'])
  94. resolve(data)
  95. })
  96. },
  97. // user logout
  98. logout ({ commit, dispatch, state }) {
  99. // console.log(state)
  100. return new Promise((resolve, reject) => {
  101. loginUp({ "UserId": state.UserId, "UserType": state.UserType }).then(result => {
  102. dispatch('tagsView/delAllViews');
  103. sessionStorage.removeItem("userName");
  104. sessionStorage.removeItem("UserType");
  105. sessionStorage.removeItem("User_Id");
  106. sessionStorage.removeItem("token");
  107. sessionStorage.removeItem("userAuthList");
  108. removeToken(); // must remove token first
  109. removeToken('codeToken');
  110. removeToken('systemSet');
  111. removeToken('FirstLogin');
  112. removeToken('userAuthList');
  113. resetRouter();
  114. commit('RESET_STATE');
  115. commit('SET_ROLES', []);
  116. resolve();
  117. })
  118. // logout(state.token).then(() => {
  119. // removeToken() // must remove token first
  120. // resetRouter()
  121. // commit('RESET_STATE')
  122. // resolve()
  123. // }).catch(error => {
  124. // reject(error)
  125. // })
  126. })
  127. },
  128. // remove token
  129. resetToken ({ commit }) {
  130. return new Promise(resolve => {
  131. removeToken() // must remove token first
  132. commit('RESET_STATE')
  133. commit('SET_ROLES', [])
  134. resolve()
  135. })
  136. },
  137. setPowerList ({ commit }, arr) {
  138. commit('SET_UserPoewrList', arr);
  139. }
  140. }
  141. export default {
  142. namespaced: true,
  143. state,
  144. mutations,
  145. actions
  146. }