user.js 5.4 KB

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