default Set<GroupModel> getGroups(int first, int max) { return getGroups(null, first, max); }
@Override public Set<GroupModel> getGroups() { return delegate.getGroups(); }
@Override public Set<GroupModel> getGroups() { return delegate.getGroups(); }
default Set<GroupModel> getGroups(String search, int first, int max) { return getGroups().stream() .filter(group -> search == null || group.getName().toLowerCase().contains(search.toLowerCase())) .skip(first) .limit(max) .collect(Collectors.toCollection(LinkedHashSet::new)); }
public static List<String> resolveAttribute(UserModel user, String name) { List<String> values = user.getAttribute(name); if (!values.isEmpty()) return values; for (GroupModel group : user.getGroups()) { values = resolveAttribute(group, name); if (values != null) return values; } return Collections.emptyList(); }
@Override public Set<GroupModel> getGroups() { if (updated != null) return updated.getGroups(); Set<GroupModel> groups = new LinkedHashSet<>(); for (String id : cached.getGroups(modelSupplier)) { GroupModel groupModel = keycloakSession.realms().getGroupById(id, realm); if (groupModel == null) { // chance that role was removed, so just delete to persistence and get user invalidated getDelegateForUpdate(); return updated.getGroups(); } groups.add(groupModel); } return groups; }
@Override public Set<GroupModel> getGroups() { if (updated != null) return updated.getGroups(); Set<GroupModel> groups = new HashSet<GroupModel>(); for (String id : cached.getGroups()) { GroupModel groupModel = keycloakSession.realms().getGroupById(id, realm); if (groupModel == null) { // chance that role was removed, so just delete to persistence and get user invalidated getDelegateForUpdate(); return updated.getGroups(); } groups.add(groupModel); } return groups; }
/** * @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); }
/** * * * @param user * @param name * @return */ public static String resolveFirstAttribute(UserModel user, String name) { String value = user.getFirstAttribute(name); if (value != null) return value; for (GroupModel group : user.getGroups()) { value = resolveFirstAttribute(group, name); if (value != null) return value; } return null; }
@Override public void setAttribute(Map<String, Object> attributes, ProtocolMapperModel mappingModel, UserSessionModel userSession, KeycloakSession session, ClientSessionContext clientSessionCt) { List<String> membership = new LinkedList<>(); boolean fullPath = useFullPath(mappingModel); for (GroupModel group : userSession.getUser().getGroups()) { if (fullPath) { membership.add(ModelToRepresentation.buildGroupPath(group)); } else { membership.add(group.getName()); } } setPlainAttribute(attributes, mappingModel, membership); }
credentialModel = passwordCredentialProvider.getPassword(realm, userModel); user = new UserDataImpl(userModel.getId(), userModel.getUsername(), userModel.getGroups().stream().map(GroupModel::getName).collect(Collectors.toSet()));
public CachedUser(Long revision, RealmModel realm, UserModel user, int notBefore) { super(revision, user.getId()); this.realm = realm.getId(); this.username = user.getUsername(); this.createdTimestamp = user.getCreatedTimestamp(); this.firstName = user.getFirstName(); this.lastName = user.getLastName(); this.email = user.getEmail(); this.emailVerified = user.isEmailVerified(); this.enabled = user.isEnabled(); this.federationLink = user.getFederationLink(); this.serviceAccountClientLink = user.getServiceAccountClientLink(); this.notBefore = notBefore; this.requiredActions = new DefaultLazyLoader<>(UserModel::getRequiredActions, Collections::emptySet); this.attributes = new DefaultLazyLoader<>(userModel -> new MultivaluedHashMap<>(userModel.getAttributes()), MultivaluedHashMap::new); this.roleMappings = new DefaultLazyLoader<>(userModel -> userModel.getRoleMappings().stream().map(RoleModel::getId).collect(Collectors.toSet()), Collections::emptySet); this.groups = new DefaultLazyLoader<>(userModel -> userModel.getGroups().stream().map(GroupModel::getId).collect(Collectors.toCollection(LinkedHashSet::new)), LinkedHashSet::new); }
if (user != null) { if ("serviceaccount".equals(user.getFirstAttribute("authenticationType"))) { authenticatedUser = new UserDataImpl(user.getId(), user.getUsername(), user.getGroups().stream().map(GroupModel::getName).collect(Collectors.toSet())); authenticated = true; complete = true; UserCredentialModel credentialModel = "serviceaccount".equals(user.getFirstAttribute("authenticationType")) ? createServiceAccountUserCredential(password) : UserCredentialModel.password(password); if (keycloakSession.userCredentialManager().isValid(realm, user, credentialModel)) { authenticatedUser = new UserDataImpl(user.getId(), user.getUsername(), user.getGroups().stream().map(GroupModel::getName).collect(Collectors.toSet())); authenticated = true; complete = true;
for (GroupModel group : user.getGroups()) { groups.add(ModelToRepresentation.buildGroupPath(group));
} else { authenticated = true; authenticatedUser = new UserDataImpl(user.getId(), user.getUsername(), user.getGroups().stream().map(GroupModel::getName).collect(Collectors.toSet()));
public CachedUser(RealmModel realm, UserModel user) { this.id = user.getId(); this.realm = realm.getId(); this.username = user.getUsername(); this.createdTimestamp = user.getCreatedTimestamp(); this.firstName = user.getFirstName(); this.lastName = user.getLastName(); this.attributes.putAll(user.getAttributes()); this.email = user.getEmail(); this.emailVerified = user.isEmailVerified(); this.credentials.addAll(user.getCredentialsDirectly()); this.enabled = user.isEnabled(); this.totp = user.isOtpEnabled(); this.federationLink = user.getFederationLink(); this.serviceAccountClientLink = user.getServiceAccountClientLink(); this.requiredActions.addAll(user.getRequiredActions()); for (RoleModel role : user.getRoleMappings()) { roleMappings.add(role.getId()); } Set<GroupModel> groupMappings = user.getGroups(); if (groupMappings != null) { for (GroupModel group : groupMappings) { groups.add(group.getId()); } } }