permission.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { changSaveLocal, getLocal } from "@/util/localUtil";
  2. import { ref } from "vue";
  3. import { findRoute, RouteName, Routes } from "@/router";
  4. import { pubPermissions } from "@/constant/permission";
  5. import { DataScope, RoleLevel, RoleMenuTreeItem, getRole } from "./role";
  6. export type UserPermission = {
  7. resourceKey: string;
  8. dataScope: DataScope;
  9. type: "menu" | "button";
  10. };
  11. export const permission = ref(getLocal("permission", [] as UserPermission[]));
  12. changSaveLocal("permission", () => permission.value);
  13. /**
  14. * 获取具有权限的路由
  15. * @param routeNames 所有路由
  16. */
  17. export const getPermissionRoutes = (routeNames: string[], e: string[] = []) => {
  18. return routeNames
  19. .filter(
  20. (routeName) =>
  21. e.includes(routeName) ||
  22. permission.value.some((p) => p.resourceKey === routeName)
  23. )
  24. .map((routeName) => findRoute(routeName))
  25. .filter((route) => route) as Routes;
  26. };
  27. export const setPermission = (perms: UserPermission[]) => {
  28. permission.value = perms.concat(pubPermissions);
  29. };