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

48 lines
1.2 KiB
TypeScript
Raw Normal View History

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