You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dianshang-qianduan/src/permission.js

72 lines
2.4 KiB
JavaScript

2 years ago
/*
* @Author: qinzhenpen qzp1807@126.com
* @Date: 2024-08-16 17:56:32
* @LastEditors: qinzhenpen qzp1807@126.com
2 months ago
* @LastEditTime: 2025-05-16 17:02:23
2 years ago
* @FilePath: \vue3\src\permission.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
2 months ago
import router from "./router";
import { ElMessage } from "element-plus";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken, getUserInfo } from "@/utils/auth";
import { isHttp } from "@/utils/validate";
import { isRelogin } from "@/utils/request";
import useUserStore from "@/store/modules/user";
import useSettingsStore from "@/store/modules/settings";
import usePermissionStore from "@/store/modules/permission";
5 years ago
NProgress.configure({ showSpinner: false });
2 months ago
const whiteList = ["/login", "/register"];
5 years ago
2 years ago
router.beforeEach((to, from, next) => {
2 months ago
NProgress.start();
2 years ago
if (getToken()) {
if (to.path === "/login") {
if (JSON.parse(getUserInfo()).roleId == 1) {
next({ path: "/index" });
NProgress.done();
} else if (JSON.parse(getUserInfo()).roleId == 2) {
next({ path: "/index" });
NProgress.done();
} else if (JSON.parse(getUserInfo()).roleId == 3) {
next({ path: "/index" });
NProgress.done();
} else if (JSON.parse(getUserInfo()).roleId == 4) {
2 months ago
next({ path: "/index" });
NProgress.done();
2 years ago
}
2 years ago
} else {
const userStore = useUserStore();
userStore
.ensureSchoolProductConfig()
.then((config) => {
if (config?.organizationMode === "TEACHING_CLASS_ONLY" && to.matched.some((record) => record.meta?.requiresAdminClass)) {
next({ path: "/admin-school/index" });
NProgress.done();
return null;
}
return usePermissionStore().getRoutersPermission();
})
.then((accessRoutes) => {
if (accessRoutes === null) return;
2 months ago
next(); // hack方法 确保addRoutes已完成
});
2 years ago
}
} else {
// 没有token
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
2 months ago
next();
2 years ago
} else {
2 months ago
next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页
NProgress.done();
2 years ago
}
}
2 months ago
});
5 years ago
router.afterEach(() => {
2 months ago
NProgress.done();
});