@Override public boolean hasRole(RoleModel role) { Set<RoleModel> roles = getRoleMappings(); if (roles.contains(role)) return true; for (RoleModel mapping : roles) { if (mapping.hasRole(role)) return true; } return false; }
@Override public boolean hasScope(RoleModel role) { if (updated != null) return updated.hasScope(role); if (cached.isFullScopeAllowed() || cached.getScope().contains(role.getId())) return true; Set<RoleModel> roles = getScopeMappings(); for (RoleModel mapping : roles) { if (mapping.hasRole(role)) return true; } roles = getRoles(); if (roles.contains(role)) return true; for (RoleModel mapping : roles) { if (mapping.hasRole(role)) return true; } return false; }
public static void applyScope( RoleModel role, RoleModel scope, Set<RoleModel> visited, Set<RoleModel> requested) { if (visited.contains(scope)) return; visited.add(scope); if (role.hasRole(scope)) { requested.add(scope); return; } if (!scope.isComposite()) return; for (RoleModel contained : scope.getComposites()) { applyScope(role, contained, visited, requested); } }