diff --git a/src/plugins/permission.ts b/src/plugins/permission.ts index 43e04b69..09096cef 100644 --- a/src/plugins/permission.ts +++ b/src/plugins/permission.ts @@ -71,3 +71,18 @@ function redirectToLogin(to: RouteLocationNormalized, next: NavigationGuardNext) const redirect = queryString ? `${to.path}?${queryString}` : to.path; next(`/login?redirect=${encodeURIComponent(redirect)}`); } + +/** 判断是否有权限 */ +export function hasAuth(value: string | string[], type: "button" | "role" = "button") { + const { roles, perms } = useUserStore().userInfo; + + // 超级管理员 拥有所有权限 + if (type === "button" && roles.includes("ROOT")) { + return true; + } + + const auths = type === "button" ? perms : roles; + return typeof value === "string" + ? auths.includes(value) + : value.some((perm) => auths.includes(perm)); +}