user.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. import Vue from 'vue'
  2. import { login, logout, phoneLogin, thirdLogin } from "@/api/login"
  3. import { ACCESS_TOKEN, USER_NAME,USER_INFO,USER_AUTH,SYS_BUTTON_AUTH,UI_CACHE_DB_DICT_DATA,TENANT_ID,CACHE_INCLUDED_ROUTES } from "@/store/mutation-types"
  4. import { welcome } from "@/utils/util"
  5. import { queryPermissionsByUser } from '@/api/api'
  6. import { getAction } from '@/api/manage'
  7. const user = {
  8. state: {
  9. token: '',
  10. username: '',
  11. realname: '',
  12. tenantid:'',
  13. welcome: '',
  14. avatar: '',
  15. permissionList: [],
  16. info: {},
  17. // 系统安全模式
  18. sysSafeMode: null,
  19. },
  20. mutations: {
  21. SET_TOKEN: (state, token) => {
  22. state.token = token
  23. },
  24. SET_NAME: (state, { username, realname, welcome }) => {
  25. state.username = username
  26. state.realname = realname
  27. state.welcome = welcome
  28. },
  29. SET_AVATAR: (state, avatar) => {
  30. state.avatar = avatar
  31. },
  32. SET_PERMISSIONLIST: (state, permissionList) => {
  33. state.permissionList = permissionList
  34. },
  35. SET_INFO: (state, info) => {
  36. state.info = info
  37. },
  38. SET_TENANT: (state, id) => {
  39. state.tenantid = id
  40. },
  41. SET_SYS_SAFE_MODE: (state, sysSafeMode) => {
  42. if (typeof sysSafeMode === 'boolean') {
  43. state.sysSafeMode = sysSafeMode
  44. } else {
  45. state.sysSafeMode = false
  46. }
  47. },
  48. },
  49. actions: {
  50. ValidateLogin(ticket) {
  51. return new Promise((resolve, reject) => {
  52. getAction("/sys/validateLogin",{ticket}).then(response => {
  53. if(response.success){
  54. const result = response.result
  55. const userInfo = result.userInfo
  56. Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
  57. Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
  58. Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
  59. // commit('SET_TOKEN', result.token)
  60. // commit('SET_INFO', userInfo)
  61. // commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() })
  62. // commit('SET_AVATAR', userInfo.avatar)
  63. console.log("222==="+response)
  64. resolve(response)
  65. }else{
  66. resolve(response)
  67. }
  68. }).catch(error => {
  69. console.log("222==="+error)
  70. reject(error)
  71. })
  72. })
  73. },
  74. // 登录
  75. Login({ commit }, userInfo) {
  76. return new Promise((resolve, reject) => {
  77. login(userInfo).then(response => {
  78. if(response.code =='200'){
  79. const result = response.result
  80. const userInfo = result.userInfo
  81. Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
  82. Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
  83. Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
  84. Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000)
  85. commit('SET_TOKEN', result.token)
  86. commit('SET_INFO', userInfo)
  87. commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() })
  88. commit('SET_AVATAR', userInfo.avatar)
  89. resolve(response)
  90. }else{
  91. reject(response)
  92. }
  93. }).catch(error => {
  94. reject(error)
  95. })
  96. })
  97. },
  98. //手机号登录
  99. PhoneLogin({ commit }, userInfo) {
  100. return new Promise((resolve, reject) => {
  101. phoneLogin(userInfo).then(response => {
  102. if(response.code =='200'){
  103. const result = response.result
  104. const userInfo = result.userInfo
  105. Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
  106. Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
  107. Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
  108. Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000)
  109. commit('SET_TOKEN', result.token)
  110. commit('SET_INFO', userInfo)
  111. commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() })
  112. commit('SET_AVATAR', userInfo.avatar)
  113. resolve(response)
  114. }else{
  115. reject(response)
  116. }
  117. }).catch(error => {
  118. reject(error)
  119. })
  120. })
  121. },
  122. // 获取用户信息
  123. GetPermissionList({ commit }) {
  124. return new Promise((resolve, reject) => {
  125. queryPermissionsByUser().then(response => {
  126. const menuData = response.result.menu;
  127. const authData = response.result.auth;
  128. const allAuthData = response.result.allAuth;
  129. //Vue.ls.set(USER_AUTH,authData);
  130. sessionStorage.setItem(USER_AUTH,JSON.stringify(authData));
  131. sessionStorage.setItem(SYS_BUTTON_AUTH,JSON.stringify(allAuthData));
  132. if (menuData && menuData.length > 0) {
  133. // //update--begin--autor:qinfeng-----date:20200109------for:JEECG-63 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------
  134. // menuData.forEach((item, index) => {
  135. // if (item["children"]) {
  136. // let hasChildrenMenu = item["children"].filter((i) => {
  137. // return !i.hidden || i.hidden == false
  138. // })
  139. // if (hasChildrenMenu == null || hasChildrenMenu.length == 0) {
  140. // item["hidden"] = true
  141. // }
  142. // }
  143. // })
  144. // //console.log(" menu show json ", menuData)
  145. // //update--end--autor:qinfeng-----date:20200109------for:JEECG-63 一级菜单的子菜单全部是隐藏路由,则一级菜单不显示------
  146. commit('SET_PERMISSIONLIST', menuData)
  147. // 设置系统安全模式
  148. commit('SET_SYS_SAFE_MODE', response.result.sysSafeMode)
  149. } else {
  150. reject('getPermissionList: permissions must be a non-null array !')
  151. }
  152. resolve(response)
  153. }).catch(error => {
  154. reject(error)
  155. })
  156. })
  157. },
  158. // 登出
  159. Logout({ commit, state }) {
  160. return new Promise((resolve) => {
  161. let logoutToken = state.token;
  162. commit('SET_TOKEN', '')
  163. commit('SET_PERMISSIONLIST', [])
  164. Vue.ls.remove(ACCESS_TOKEN)
  165. Vue.ls.remove(USER_INFO)
  166. Vue.ls.remove(USER_NAME)
  167. Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
  168. Vue.ls.remove(CACHE_INCLUDED_ROUTES)
  169. Vue.ls.remove(TENANT_ID)
  170. //console.log('logoutToken: '+ logoutToken)
  171. logout(logoutToken).then(() => {
  172. if (process.env.VUE_APP_SSO == 'true') {
  173. let sevice = 'http://' + window.location.host + '/'
  174. let serviceUrl = encodeURIComponent(sevice)
  175. window.location.href = process.env.VUE_APP_CAS_BASE_URL + '/logout?service=' + serviceUrl
  176. }
  177. resolve()
  178. }).catch(() => {
  179. resolve()
  180. })
  181. })
  182. },
  183. // 第三方登录
  184. ThirdLogin({ commit }, param) {
  185. return new Promise((resolve, reject) => {
  186. thirdLogin(param.token,param.thirdType).then(response => {
  187. if(response.code =='200'){
  188. const result = response.result
  189. const userInfo = result.userInfo
  190. Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
  191. Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
  192. Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
  193. commit('SET_TOKEN', result.token)
  194. commit('SET_INFO', userInfo)
  195. commit('SET_NAME', { username: userInfo.username,realname: userInfo.realname, welcome: welcome() })
  196. commit('SET_AVATAR', userInfo.avatar)
  197. resolve(response)
  198. }else{
  199. reject(response)
  200. }
  201. }).catch(error => {
  202. reject(error)
  203. })
  204. })
  205. },
  206. saveTenant({ commit }, id){
  207. Vue.ls.set(TENANT_ID, id, 7 * 24 * 60 * 60 * 1000)
  208. commit('SET_TENANT', id)
  209. }
  210. }
  211. }
  212. export default user