user.js 7.3 KB

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