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;
|
2025-06-23 05:58:04 -04:00
|
|
|
const requiresAuth = to?.meta?.requiresAuth || false;
|
2025-07-08 16:55:04 +08:00
|
|
|
const requireLogin = to?.meta?.requireLogin || false;
|
2025-07-23 17:02:24 +08:00
|
|
|
const query = to?.query ?? {};
|
2025-06-23 03:16:55 -04:00
|
|
|
|
2025-07-08 16:55:04 +08:00
|
|
|
if (requireLogin && !userStore.isLogin) {
|
2025-07-23 17:02:24 +08:00
|
|
|
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) {
|
2025-09-15 10:18:40 +08:00
|
|
|
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
|
|
|
}
|