Files
lingji-work-fe/src/router/guard/userLoginInfo.ts

48 lines
1.2 KiB
TypeScript

/*
* @Author: RenXiaoDong
* @Date: 2025-06-22 22:59:16
*/
import type { Router } from 'vue-router';
import { message } from 'ant-design-vue';
import NProgress from 'nprogress';
import { goUserLogin } from '@/utils/user';
// import router from '@/router';
import { checkRoutePermission } from '@/permission/permission';
import { useUserStore } from '@/stores/modules/user';
export default function setupUserLoginInfoGuard(router: Router) {
router.beforeEach(async (to, from, next) => {
NProgress.start();
const userStore = useUserStore();
const routeName = to?.name as string;
const requiresAuth = to?.meta?.requiresAuth || false;
const requireLogin = to?.meta?.requireLogin || false;
const query = to?.query ?? {};
if (requireLogin && !userStore.isLogin) {
goUserLogin(query);
next();
return;
}
if (requiresAuth) {
const hasPermission = checkRoutePermission(routeName);
if (!hasPermission) {
message.error('您没有权限访问该页面');
next('/trial');
return;
}
next();
return;
}
next();
});
router.afterEach((to) => {
NProgress.done();
});
}