@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); return RoleUtils.hasRole(roles, role) || RoleUtils.hasRoleFromGroup(getGroups(), role, true); }
@Override public boolean isMemberOf(GroupModel group) { Set<GroupModel> roles = getGroups(); return RoleUtils.isMember(roles, group); }
/** * @param user * @return all user role mappings including all groups of user. Composite roles will be expanded */ public static Set<RoleModel> getDeepUserRoleMappings(UserModel user) { Set<RoleModel> roleMappings = new HashSet<>(user.getRoleMappings()); for (GroupModel group : user.getGroups()) { addGroupRoles(group, roleMappings); } return expandCompositeRoles(roleMappings); }
/** * Checks whether the {@code targetRole} is contained in any of the {@code groups} or their parents * (if requested) * @param groups * @param targetRole * @param checkParentGroup When {@code true}, also parent group is recursively checked for role * @return true if targetRole is in roles (directly or indirectly via composite role) */ public static boolean hasRoleFromGroup(Iterable<GroupModel> groups, RoleModel targetRole, boolean checkParentGroup) { if (groups == null) { return false; } return StreamSupport.stream(groups.spliterator(), false) .anyMatch(group -> hasRoleFromGroup(group, targetRole, checkParentGroup)); }
@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); return RoleUtils.hasRole(roles, role); }
/** * @param roles * @return new set with composite roles expanded */ public static Set<RoleModel> expandCompositeRoles(Set<RoleModel> roles) { Set<RoleModel> visited = new HashSet<>(); return roles.stream() .flatMap(roleModel -> RoleUtils.expandCompositeRolesStream(roleModel, visited)) .collect(Collectors.toSet()); }
private static void addGroupRoles(GroupModel group, Set<RoleModel> roleMappings) { roleMappings.addAll(group.getRoleMappings()); if (group.getParentId() == null) return; addGroupRoles(group.getParent(), roleMappings); }
/** * Checks whether the {@code targetRole} is contained in the given group or its parents * (if requested) * @param group Group to check role for * @param targetRole * @param checkParentGroup When {@code true}, also parent group is recursively checked for role * @return true if targetRole is in roles (directly or indirectly via composite role) */ public static boolean hasRoleFromGroup(GroupModel group, RoleModel targetRole, boolean checkParentGroup) { if (group.hasRole(targetRole)) return true; if (checkParentGroup) { GroupModel parent = group.getParent(); return parent != null && hasRoleFromGroup(parent, targetRole, true); } return false; }
@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); return RoleUtils.hasRole(roles, role); }
@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); return RoleUtils.hasRole(roles, role) || RoleUtils.hasRoleFromGroup(getGroups(), role, true); }
@Override public boolean isMemberOf(GroupModel group) { Set<GroupModel> roles = getGroups(); return RoleUtils.isMember(roles, group); }
@Override public boolean hasRole(RoleModel role) { if (updated != null) return updated.hasRole(role); if (cached.getRoleMappings(modelSupplier).contains(role.getId())) return true; Set<RoleModel> mappings = getRoleMappings(); for (RoleModel mapping: mappings) { if (mapping.hasRole(role)) return true; } return RoleUtils.hasRoleFromGroup(getGroups(), role, true); }
@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); return RoleUtils.hasRole(roles, role) || RoleUtils.hasRoleFromGroup(getGroups(), role, true); }
@Override public boolean isMemberOf(GroupModel group) { Set<GroupModel> roles = getGroups(); return RoleUtils.isMember(roles, group); }
@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); return RoleUtils.hasRole(roles, role) || RoleUtils.hasRoleFromGroup(getGroups(), role, true); }
@Override public boolean isMemberOf(GroupModel group) { if (updated != null) return updated.isMemberOf(group); if (cached.getGroups(modelSupplier).contains(group.getId())) return true; Set<GroupModel> roles = getGroups(); return RoleUtils.isMember(roles, group); }
@Override public boolean isMemberOf(GroupModel group) { if (user.getGroupIds() == null) return false; if (user.getGroupIds().contains(group.getId())) return true; Set<GroupModel> groups = getGroups(); return RoleUtils.isMember(groups, group); }