mirror of https://github.com/halo-dev/halo
23 lines
609 B
TypeScript
23 lines
609 B
TypeScript
import { useRoleStore } from "@/stores/role";
|
|
import { hasPermission } from "@/utils/permission";
|
|
import type { Router } from "vue-router";
|
|
|
|
export function setupPermissionGuard(router: Router) {
|
|
router.beforeEach((to, from, next) => {
|
|
const roleStore = useRoleStore();
|
|
const { uiPermissions } = roleStore.permissions;
|
|
const { meta } = to;
|
|
if (meta && meta.permissions) {
|
|
const flag = hasPermission(
|
|
Array.from(uiPermissions),
|
|
meta.permissions as string[],
|
|
true
|
|
);
|
|
if (!flag) {
|
|
next({ name: "Forbidden" });
|
|
}
|
|
}
|
|
next();
|
|
});
|
|
}
|