/* * @Author: whyafterme * @Date: 2022-11-03 11:31:21 * @LastEditTime: 2022-11-21 09:02:20 * @LastEditors: whyafterme * @Description: * @FilePath: \new\src\router\guard\permission-guard.js */ import { useUserStore } from '@/store/modules/user' import { usePermissionStore } from '@/store/modules/permission' import { NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '@/router/routes' import { getUserInfo, signinRedirect, signoutRedirect } from '@/utils/oidc/index.js' export function createPermissionGuard(router) { const userStore = useUserStore() const permissionStore = usePermissionStore() router.beforeEach(async(to, from, next) => { // const oidcUser = await getUserInfo() const oidcUser = true if (oidcUser) { const hasRoutes = !!permissionStore.permissionRoutes.length if (hasRoutes) { next() } else { try { // const { clientRoleList } = oidcUser.profile // const { VITE_CLIENT_ID } = import.meta.env // const { roleId } = clientRoleList.find((item) => { // return item.clientId === VITE_CLIENT_ID // }) // await userStore.getUserInfo() // const routes = await permissionStore.generateRoutes(roleId) const routes = await permissionStore.generateRoutesMock() routes.forEach((item) => { router.addRoute(item) }) router.addRoute(NOT_FOUND_ROUTE) router.addRoute(REDIRECT_ROUTE) next({ ...to, replace: true }) } catch (error) { signinRedirect() } } } else { if (to.path === '/login') { next() } else { signinRedirect() } } }) }