diff --git a/src/api/api.js b/src/api/api.js index 0980f65e..86c02ce3 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -18,6 +18,8 @@ const frozenBatch = (params) => postAction('/sys/user/frozenBatch', params) const checkOnlyUser = (params) => getAction('/sys/user/checkOnlyUser', params) // 改变密码 const changePassword = (params) => postAction('/sys/user/changePassword', params) +// 单点登录获取用户信息 +const getSSOUserInfo = (params) => postAction('/iam/loginByOauth2', params) // 权限管理 const addPermission = (params) => postAction('/sys/permission/add', params) @@ -69,6 +71,7 @@ const getFormDictTreeList = (params) => getAction('/sys/dictItem/treeListOption' // 字典标签专用(通过code获取字典数组) export const ajaxGetDictItems = (code, params) => getAction(`/sys/dict/getDictItems/${code}`, params) + // 从缓存中获取字典配置 function getDictItemsFromCache (dictCode) { if (Vue.ls.get(UI_CACHE_DB_DICT_DATA) && Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode] && Vue.ls.get(UI_CACHE_DB_DICT_DATA)[dictCode].length > 0) { @@ -187,21 +190,22 @@ export { queryMyDepartTreeList, getUserNoticeInfo, getDictItemsFromCache, - + getShowAreaData, addAreaData, editAreaData, getFileInfo, - + addTag, editTag, addCategoryItem, editCategoryItem, - + getStandardList, - + getWorkGroupTreeList, - - getEnterpriseLevelMapList - + + getEnterpriseLevelMapList, + getSSOUserInfo + } diff --git a/src/permission.js b/src/permission.js index 39cd233d..90f284a9 100644 --- a/src/permission.js +++ b/src/permission.js @@ -3,15 +3,29 @@ import router from './router' import store from './store' import NProgress from 'nprogress' // progress bar import 'nprogress/nprogress.css' // progress bar style -import { ACCESS_TOKEN, OAUTH2_LOGIN_PAGE_PATH } from '@/store/mutation-types' -import { generateIndexRouter, isOAuth2AppEnv, findFirstRoute } from '@/utils/util' +import { ACCESS_TOKEN, OAUTH2_LOGIN_PAGE_PATH, UI_CACHE_DB_DICT_DATA, USER_INFO, USER_NAME } from '@/store/mutation-types' +import { generateIndexRouter, isOAuth2AppEnv, findFirstRoute, welcome } from '@/utils/util' +import { getSSOUserInfo } from './api/api' NProgress.configure({ showSpinner: false }) // NProgress Configuration const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration'] // no redirect whitelist whiteList.push(OAUTH2_LOGIN_PAGE_PATH) -router.beforeEach((to, from, next) => { +router.beforeEach(async (to, from, next) => { + // 单点登录 + if (to.query.code) { + const result = await getSSOUserInfo({ code: to.query.code }) + const userInfo = result.userInfo + Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000) + Vue.ls.set(UI_CACHE_DB_DICT_DATA, result.sysAllDictItems, 7 * 24 * 60 * 60 * 1000) + store.commit('SET_TOKEN', result.token) + store.commit('SET_INFO', userInfo) + store.commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname, welcome: welcome() }) + store.commit('SET_AVATAR', userInfo.avatar) + } // 处理是否是嵌入其他系统,是需要隐藏左侧和上面,如果当前值是true,就不需要修改了 const isEmbedded = store.getters.isEmbedded // 用是否iframe嵌套判断