ecd247b861c8266c2005e78c751776e448807961.svn-base 7.5 KB

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