feat: 接入真实登录鉴权流程

This commit is contained in:
湛兮
2026-05-26 14:45:15 +08:00
parent a6c9f5dee3
commit 5003628017
21 changed files with 572 additions and 305 deletions
+22 -6
View File
@@ -81,13 +81,28 @@ function isOneOfArray(a: Array<string>, b: Array<string>) {
: true;
}
/** 从localStorage里取出当前登录用户的角色roles,过滤无权限的菜单 */
function hasRoutePermission(meta: CustomizeRouteMeta, permissions: string[]) {
const required = meta?.permission;
if (!required) return true;
if (permissions.includes("*") || permissions.includes("*:*:*")) return true;
const requiredList = Array.isArray(required) ? required : [required];
return requiredList.some(permission => permissions.includes(permission));
}
/** 从localStorage里取出当前登录用户权限码,过滤无权限菜单 */
function filterNoPermissionTree(data: RouteComponent[]) {
const currentRoles =
storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [];
const newTree = cloneDeep(data).filter((v: any) =>
isOneOfArray(v.meta?.roles, currentRoles)
);
const userInfo = storageLocal().getItem<DataInfo<number>>(userKey);
const currentRoles = userInfo?.roles ?? [];
const currentPermissions = userInfo?.permissions ?? [];
const newTree = cloneDeep(data).filter((v: any) => {
return (
isOneOfArray(v.meta?.roles, currentRoles) &&
hasRoutePermission(v.meta, currentPermissions)
);
});
newTree.forEach(
(v: any) => v.children && (v.children = filterNoPermissionTree(v.children))
);
@@ -404,6 +419,7 @@ export {
getTopMenu,
addPathMatch,
isOneOfArray,
hasRoutePermission,
getHistoryMode,
addAsyncRoutes,
getParentPaths,