update user page style
This commit is contained in:
+38
-6
@@ -34,14 +34,46 @@ export function getRoleDisplayName(role: ManagedUserRole | undefined, roleList:
|
||||
return typeof role === "string" ? role : role.name || role.code || "未配置角色";
|
||||
}
|
||||
|
||||
export function buildEffectiveRoleCodeSet(user: ManagedUser): Set<string> {
|
||||
export function buildEffectiveRoleCodeSet(user: ManagedUser, roleList: Role[] = []): Set<string> {
|
||||
const roleCodeSet = new Set<string>();
|
||||
for (const role of getManagedUserRoleList(user)) {
|
||||
if (typeof role !== "string") {
|
||||
roleCodeSet.add(buildRoleCode(role as Role));
|
||||
continue;
|
||||
const visitedRoleIds = new Set<string>();
|
||||
|
||||
function addRole(role: ManagedUserRole | Role): void {
|
||||
const roleId = typeof role === "string"
|
||||
? roleList.find(item => buildRoleCode(item) === role || item.code === role)?.id
|
||||
: role.id || roleList.find(item => buildRoleCode(item) === buildRoleCode(role as Role))?.id;
|
||||
if (roleId && visitedRoleIds.has(roleId)) {
|
||||
return;
|
||||
}
|
||||
roleCodeSet.add(role);
|
||||
if (roleId) {
|
||||
visitedRoleIds.add(roleId);
|
||||
}
|
||||
|
||||
if (typeof role === "string") {
|
||||
roleCodeSet.add(role);
|
||||
const separatorIndex = role.indexOf(":");
|
||||
if (-1 < separatorIndex) {
|
||||
roleCodeSet.add(role.slice(separatorIndex + 1));
|
||||
}
|
||||
} else {
|
||||
roleCodeSet.add(role.code);
|
||||
roleCodeSet.add(buildRoleCode(role as Role));
|
||||
}
|
||||
|
||||
const fullRole = roleId ? roleList.find(item => item.id === roleId) : undefined;
|
||||
for (const childRoleId of fullRole?.childRoleIdList || []) {
|
||||
const childRole = roleList.find(item => item.id === childRoleId);
|
||||
if (childRole) {
|
||||
addRole(childRole);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const role of getManagedUserRoleList(user)) {
|
||||
addRole(role);
|
||||
}
|
||||
for (const roleCode of user.user?.roleList || []) {
|
||||
addRole(roleCode);
|
||||
}
|
||||
return roleCodeSet;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user