| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { to as tos } from 'await-to-js';
- import router from './router';
- import NProgress from 'nprogress';
- import 'nprogress/nprogress.css';
- import { getToken } from '@/utils/auth';
- import { isPathMatch } from '@/utils/validate';
- import { useUserStore } from '@/store/modules/user';
- import { ElMessage } from 'element-plus/es';
- import { getCurrentSite, SITE_ROUTES } from '@/utils/siteConfig';
- NProgress.configure({ showSpinner: false });
- const whiteList = ['/login', '/register', '/social-callback', '/register*', '/register/*', '/index', '/'];
- const isWhiteList = (path: string) => {
- return whiteList.some((pattern) => isPathMatch(pattern, path));
- };
- // 获取主站完整 URL(用于跨域跳转)
- function getMainSiteUrl(path: any) {
- if (import.meta.env.PROD) {
- return `https://www.yoe365.com${path}`;
- } else {
- return `http://localhost:5101${path}`;
- }
- }
- router.beforeEach(async (to, from, next) => {
- NProgress.start();
- const site = getCurrentSite();
- const allowedPaths = SITE_ROUTES[site];
- const host = window.location.hostname;
- const port = window.location.port;
- if (getToken()) {
- const [err] = await tos(useUserStore().getInfo());
- if (err) {
- await useUserStore().logout();
- ElMessage.error(err);
- window.location.href = getMainSiteUrl('/index');
- NProgress.done();
- } else {
- if (!allowedPaths.includes(to.path)) {
- console.warn(`[${site}] 禁止访问 ${to.path}`);
- window.location.href = getMainSiteUrl('/index');
- NProgress.done();
- } else {
- next();
- NProgress.done();
- }
- }
- } else {
- // 没有token
- if (isWhiteList(to.path)) {
- if (host == 'www.yoe365.com' || port == '5101') {
- next();
- } else {
- window.location.href = getMainSiteUrl(to.path);
- }
- NProgress.done();
- } else {
- window.location.href = getMainSiteUrl('/index');
- NProgress.done();
- }
- }
- });
- router.afterEach(() => {
- NProgress.done();
- });
|