GitBucket
4.6.0
Toggle navigation
Sign in
Files
Branches
1
Tags
Issues
Pull Requests
Labels
Milestones
Wiki
08335
/
hivui-platform-template
hivui平台项目模板
Browse code
单点登录bug处理
master
1 parent
567ff88
commit
51937d910c84c4d64b01c32f109ec2b581c2ec0e
20278
authored
on 30 May 2022
Showing
2 changed files
project/hivuiMain/store/index.js
project/hivuiMain/store/modules/user.js
Ignore Space
Show notes
View
project/hivuiMain/store/index.js
// import Vue from 'vue' // import Vuex from 'vuex' import app from './modules/app' import portal from './modules/portal' import user from './modules/user' import getters from './getters' Vue.use(Vuex) export default new Vuex.Store({ modules:{ portal, app, user }, getters, state: { appStatus:'loading'//failed , loading ,success }, mutations: { SET_appStatus(state,str){ state.appStatus = str; } }, actions: { async initApp(me){ if(window.HIVUI_SETTING.url!=location.origin&&window.HIVUI_SETTING.isSingleLogin){ await me.dispatch('user/login')//单点登录 } // await me.dispatch('user/load') //await me.dispatch('app/getPowers')//权限 // console.log('//权限 end') await me.dispatch('app/getMenus')//菜单 // console.log('//菜单 end') await me.dispatch('user/getInfo')//获取用户信息 // console.log('//获取用户信息 end') await me.dispatch('user/getBzList')//获取多岗信息 // console.log('//获取多岗信息 end') await me.dispatch('app/getLatelyUse')//最近使用 // console.log('//最近使用 end') //await me.dispatch('app/getQuickNav')//快速导航 // console.log('//快速导航 end') // await me.dispatch('portal/loadColumns')//栏目功能 // console.log('//栏目功能 end') // await me.dispatch('portal/loadList')//工作台门户列表 // console.log('//工作台门户列表 end') // await me.dispatch('portal/loadSysList')//系统门户列表 // console.log('//系统门户列表 end') }, setAppLoad({state,commit},status){ commit('SET_appStatus',status); } } })
// import Vue from 'vue' // import Vuex from 'vuex' import app from './modules/app' import portal from './modules/portal' import user from './modules/user' import getters from './getters' Vue.use(Vuex) export default new Vuex.Store({ modules:{ portal, app, user }, getters, state: { appStatus:'loading'//failed , loading ,success }, mutations: { SET_appStatus(state,str){ state.appStatus = str; } }, actions: { async initApp(me){ if(window.HIVUI_SETTING.url!=location.origin){ await me.dispatch('user/login')//单点登录 } // await me.dispatch('user/load') //await me.dispatch('app/getPowers')//权限 // console.log('//权限 end') await me.dispatch('app/getMenus')//菜单 // console.log('//菜单 end') await me.dispatch('user/getInfo')//获取用户信息 // console.log('//获取用户信息 end') await me.dispatch('user/getBzList')//获取多岗信息 // console.log('//获取多岗信息 end') await me.dispatch('app/getLatelyUse')//最近使用 // console.log('//最近使用 end') //await me.dispatch('app/getQuickNav')//快速导航 // console.log('//快速导航 end') // await me.dispatch('portal/loadColumns')//栏目功能 // console.log('//栏目功能 end') // await me.dispatch('portal/loadList')//工作台门户列表 // console.log('//工作台门户列表 end') // await me.dispatch('portal/loadSysList')//系统门户列表 // console.log('//系统门户列表 end') }, setAppLoad({state,commit},status){ commit('SET_appStatus',status); } } })
Ignore Space
Show notes
View
project/hivuiMain/store/modules/user.js
import {baseLogin, logout} from '@main/api/login' import {getInfo,getBzList} from '@main/api/user' import { getToken, setToken, removeToken } from '@main/utils/auth' import {getUrlValue,getUrlSearch} from '@main/utils' import md5 from 'js-md5' if(window.Scp==null){ window.Scp = {} } if(window.Scp.User==null){ window.Scp.User={} } const user = { namespaced: true, state: { token: getToken(), avatar: '', introduction: '', roles: [], //后面加的 userInfo: {}, bzList: null, id:Scp.User.id, name:Scp.User.name, deptId:Scp.User.deptId, deptName:Scp.User.deptName, positionId:Scp.User.positionId, postionName:Scp.User.postionName, bzId:Scp.User.bzId, bzName:Scp.User.bzName, bzDeptId:Scp.User.bzDeptId, bzDeptName:Scp.User.bzDeptName, bzPositionId:Scp.User.bzPositionId, bzPositionName:Scp.User.bzPositionName, orgId:Scp.User.orgId , defOrgId:Scp.User.defOrgId, showPwDialog:false, }, mutations: { SET_CODE: (state, code) => { state.code = code }, SET_TOKEN: (state, token) => { state.token = token }, SET_INTRODUCTION: (state, introduction) => { state.introduction = introduction }, SET_NAME: (state, name) => { state.name = name }, SET_AVATAR: (state, avatar) => { state.avatar = avatar }, SET_ROLES: (state, roles) => { state.roles = roles }, SET_USERINFO: (state, userInfo) => { state.userInfo = userInfo }, SET_BZLIST: (state, bzList) => { state.bzList = bzList }, SET_PWDIALOG: (state, isShow) => { state.showPwDialog = isShow }, }, actions: { load({ commit, state }) { }, // user login login({ commit }, userInfo) { let pushData={}; if(userInfo){ const { username, password } = userInfo pushData={ username: username.trim(), password: md5(password) }; } return new Promise((resolve, reject) => { if(window.HIVUI_SETTING.url!=location.origin){ let searchParams=getUrlSearch(location.href); delete searchParams.ticket; let service=location.origin+"?"; for(let k in searchParams){ service+=k+"="+searchParams[k]+"&"; } service.slice(0,-1); pushData={ type:"casPre", ticket:getUrlValue('','ticket'), service:service }; } baseLogin(pushData).then(response => { const data = response commit('SET_TOKEN', data.token) setToken(data.token) resolve() }).catch(error => { reject(error) }) }) }, // 多岗 getBzList({ commit, state }) { return new Promise((resolve, reject) => { getBzList().then(response => { let _arr=response.dataPack if (_arr) { if (!_arr || _arr.length < 0) { reject('getInfo: data must be a non-null array!') } commit("SET_BZLIST",_arr); resolve(_arr) }else{ reject('Verification failed, please Login again.'); } }).catch(error => { reject(error) }); }) }, // get user info getInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then(response => { if (!response.dataPack) { reject('Verification failed, please Login again.') } //const { info ,org} = response.data; const info = response.dataPack // if (!info) { // reject('Verification failed, please Login again.') // } //const { roles, name, avatar, introduction } = data let roles = ['admim'], avatar = "", introduction = "", name = info.fuserid, userInfo = info; // roles must be a non-empty array if (!roles || roles.length <= 0) { reject('getInfo: roles must be a non-null array!') } commit('SET_USERINFO', userInfo) commit('SET_ROLES', roles) commit('SET_NAME', name) commit('SET_AVATAR', avatar) commit('SET_INTRODUCTION', introduction) resolve(info) }).catch(error => { reject(error) }) }) }, // user logout logout({ commit, state }) { return new Promise((resolve, reject) => { if(!getToken()){ resolve(); }else{ logout().then(() => { commit('SET_TOKEN', ''); commit('SET_ROLES', []); removeToken(); resolve(); }).catch(error => { reject(error); }); } }); }, // remove token resetToken({ commit }) { return new Promise(resolve => { commit('SET_TOKEN', '') commit('SET_ROLES', []) removeToken() resolve() }) }, // dynamically modify permissions changeRoles({ commit, dispatch }, role) { return new Promise(async resolve => { const token = role + '-token' commit('SET_TOKEN', token) setToken(token) const { roles } = await dispatch('getInfo') //resetRouter() // generate accessible routes map based on roles const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true }) // dynamically add accessible routes router.addRoutes(accessRoutes) // reset visited views and cached views dispatch('tagsView/delAllViews', null, { root: true }) resolve() }) }, //修改密码弹窗 showPwDialog({ commit, dispatch }, isShow){ commit('SET_PWDIALOG', isShow); }, } } export default user
import {baseLogin, logout} from '@main/api/login' import {getInfo,getBzList} from '@main/api/user' import { getToken, setToken, removeToken } from '@main/utils/auth' import {getUrlValue,getUrlSearch} from '@main/utils' import md5 from 'js-md5' if(window.Scp==null){ window.Scp = {} } if(window.Scp.User==null){ window.Scp.User={} } const user = { namespaced: true, state: { token: getToken(), avatar: '', introduction: '', roles: [], //后面加的 userInfo: {}, bzList: null, id:Scp.User.id, name:Scp.User.name, deptId:Scp.User.deptId, deptName:Scp.User.deptName, positionId:Scp.User.positionId, postionName:Scp.User.postionName, bzId:Scp.User.bzId, bzName:Scp.User.bzName, bzDeptId:Scp.User.bzDeptId, bzDeptName:Scp.User.bzDeptName, bzPositionId:Scp.User.bzPositionId, bzPositionName:Scp.User.bzPositionName, orgId:Scp.User.orgId , defOrgId:Scp.User.defOrgId, showPwDialog:false, }, mutations: { SET_CODE: (state, code) => { state.code = code }, SET_TOKEN: (state, token) => { state.token = token }, SET_INTRODUCTION: (state, introduction) => { state.introduction = introduction }, SET_NAME: (state, name) => { state.name = name }, SET_AVATAR: (state, avatar) => { state.avatar = avatar }, SET_ROLES: (state, roles) => { state.roles = roles }, SET_USERINFO: (state, userInfo) => { state.userInfo = userInfo }, SET_BZLIST: (state, bzList) => { state.bzList = bzList }, SET_PWDIALOG: (state, isShow) => { state.showPwDialog = isShow }, }, actions: { load({ commit, state }) { }, // user login login({ commit }, userInfo) { const { username, password } = userInfo return new Promise((resolve, reject) => { let pushData={ username: username.trim(), password: md5(password) }; if(window.HIVUI_SETTING.url!=location.origin){ let searchParams=getUrlSearch(location.href); delete searchParams.ticket; let service="?"; for(let k in searchParams){ service+=k+"="+searchParams[k]+"&"; } service.slice(0,-1); pushData={ type:"casPre", ticket:getUrlValue('','ticket'), service:service }; } baseLogin(pushData).then(response => { const data = response commit('SET_TOKEN', data.token) setToken(data.token) resolve() }).catch(error => { reject(error) }) }) }, // 多岗 getBzList({ commit, state }) { return new Promise((resolve, reject) => { getBzList().then(response => { let _arr=response.dataPack if (_arr) { if (!_arr || _arr.length < 0) { reject('getInfo: data must be a non-null array!') } commit("SET_BZLIST",_arr); resolve(_arr) }else{ reject('Verification failed, please Login again.'); } }).catch(error => { reject(error) }); }) }, // get user info getInfo({ commit, state }) { return new Promise((resolve, reject) => { getInfo().then(response => { if (!response.dataPack) { reject('Verification failed, please Login again.') } //const { info ,org} = response.data; const info = response.dataPack // if (!info) { // reject('Verification failed, please Login again.') // } //const { roles, name, avatar, introduction } = data let roles = ['admim'], avatar = "", introduction = "", name = info.fuserid, userInfo = info; // roles must be a non-empty array if (!roles || roles.length <= 0) { reject('getInfo: roles must be a non-null array!') } commit('SET_USERINFO', userInfo) commit('SET_ROLES', roles) commit('SET_NAME', name) commit('SET_AVATAR', avatar) commit('SET_INTRODUCTION', introduction) resolve(info) }).catch(error => { reject(error) }) }) }, // user logout logout({ commit, state }) { return new Promise((resolve, reject) => { if(!getToken()){ resolve(); }else{ logout().then(() => { commit('SET_TOKEN', ''); commit('SET_ROLES', []); removeToken(); resolve(); }).catch(error => { reject(error); }); } }); }, // remove token resetToken({ commit }) { return new Promise(resolve => { commit('SET_TOKEN', '') commit('SET_ROLES', []) removeToken() resolve() }) }, // dynamically modify permissions changeRoles({ commit, dispatch }, role) { return new Promise(async resolve => { const token = role + '-token' commit('SET_TOKEN', token) setToken(token) const { roles } = await dispatch('getInfo') //resetRouter() // generate accessible routes map based on roles const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true }) // dynamically add accessible routes router.addRoutes(accessRoutes) // reset visited views and cached views dispatch('tagsView/delAllViews', null, { root: true }) resolve() }) }, //修改密码弹窗 showPwDialog({ commit, dispatch }, isShow){ commit('SET_PWDIALOG', isShow); }, } } export default user
Show line notes below