Files
lingji-work-fe/src/router/guard/userLoginInfo.ts
2025-07-23 17:02:24 +08:00

46 lines
1.1 KiB
TypeScript

/*
* @Author: RenXiaoDong
* @Date: 2025-06-22 22:59:16
*/
import type { Router } from 'vue-router';
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) {
AMessage.error('您没有权限访问该页面');
next('/');
return;
}
next();
return;
}
next();
});
router.afterEach((to) => {
NProgress.done();
});
}