private Optional<UserRepresentation> getUser(String realmName, String username) throws Exception { return withRealm(realmName, realm -> realm.users().search(username).stream() .filter(userRep -> username.equals(userRep.getUsername())) .findFirst()); }
@Override public Optional<User> getUserWithName(String realmName, String resourceName) throws Exception { log.info("Retrieving user {} in realm {}", resourceName, realmName); return withRealm(realmName, realm -> realm.users().list().stream() .filter(userRep -> { Map<String, List<String>> attributes = userRep.getAttributes(); return attributes != null && attributes.get("resourceName") != null && resourceName.equals(attributes.get("resourceName").get(0)); }) .findFirst() .map(userRep -> { List<GroupRepresentation> groupReps = realm.users().get(userRep.getId()).groups(); return buildUser(userRep, groupReps); })); }
@Override public void deleteUser(String realmName, User user) throws Exception { log.info("Deleting user {} in realm {}", user.getSpec().getUsername(), realmName); withRealm(realmName, realm -> { List<UserRepresentation> users = realm.users().search(user.getSpec().getUsername()); for (UserRepresentation userRep : users) { log.info("Found user with name {}, want {}", userRep.getUsername(), user.getSpec().getUsername()); if (user.getSpec().getUsername().equals(userRep.getUsername())) { realm.users().delete(userRep.getId()); } } return users; }); }
validateForCreation(user); withRealm(realmName, realm -> {
@Override public boolean replaceUser(String realmName, User user) throws Exception { log.info("Replacing user {} in realm {}", user.getSpec().getUsername(), realmName); user.validate(); UserRepresentation userRep = getUser(realmName, user.getSpec().getUsername()).orElse(null); if (userRep == null) { return false; } if (user.getSpec().getAuthentication() != null) { String existingAuthType = userRep.getAttributes().get("authenticationType").get(0); if (!user.getSpec().getAuthentication().getType().name().equals(existingAuthType)) { throw new IllegalArgumentException("Changing authentication type of a user is not allowed (existing is " + existingAuthType + ")"); } } return withRealm(realmName, realm -> { if (user.getSpec().getAuthentication() != null) { switch (user.getSpec().getAuthentication().getType()) { case password: setUserPassword(realm.users().get(userRep.getId()), user.getSpec().getAuthentication()); break; case federated: setFederatedIdentity(realm.users().get(userRep.getId()), user.getSpec().getAuthentication()); break; } } applyAuthorizationRules(realm, user, realm.users().get(userRep.getId())); return true; }); }