@Override public boolean removeFederatedIdentity(RealmModel realm, UserModel user, String identityProvider) { FederatedIdentityEntity entity = findFederatedIdentity(user, identityProvider); if (entity != null) { em.remove(entity); em.flush(); return true; } else { return false; } }
@Override public UserConsentModel getConsentByClient(RealmModel realm, String userId, String clientId) { UserConsentEntity entity = getGrantedConsentEntity(userId, clientId); return toConsentModel(realm, entity); }
@Override public List<UserModel> getUsers(RealmModel realm) { return getUsers(realm, false); }
@Override public void updateConsent(RealmModel realm, String userId, UserConsentModel consent) { String clientId = consent.getClient().getId(); UserConsentEntity consentEntity = getGrantedConsentEntity(userId, clientId); if (consentEntity == null) { throw new ModelException("Consent not found for client [" + clientId + "] and user [" + userId + "]"); } updateGrantedConsentEntity(consentEntity, consent); }
@Override public void preRemove(RealmModel realm, ComponentModel component) { if (component.getProviderType().equals(UserStorageProvider.class.getName())) { removeImportedUsers(realm, component.getId()); } if (component.getProviderType().equals(ClientStorageProvider.class.getName())) { removeConsentByClientStorageProvider(realm, component.getId()); } }
@Override public int getUsersCount(RealmModel realm) { return getUsersCount(realm, false); }
public boolean revokeConsentForClient(RealmModel realm, String userId, String clientId) { UserConsentEntity consentEntity = getGrantedConsentEntity(userId, clientId); if (consentEntity == null) return false; em.remove(consentEntity); em.flush(); return true; }
@Override public boolean removeUser(RealmModel realm, UserModel user) { UserEntity userEntity = em.find(UserEntity.class, user.getId()); if (userEntity == null) return false; removeUser(userEntity); return true; }
@Override public UserModel addUser(RealmModel realm, String username) { return addUser(realm, KeycloakModelUtils.generateId(), username.toLowerCase(), true, true); }
@Override public UserModel getUserByEmail(String email, RealmModel realm) { TypedQuery<UserEntity> query = em.createNamedQuery("getRealmUserByEmail", UserEntity.class); query.setParameter("email", email.toLowerCase()); query.setParameter("realmId", realm.getId()); List<UserEntity> results = query.getResultList(); if (results.isEmpty()) return null; ensureEmailConstraint(results, realm); return new UserAdapter(session, realm, em, results.get(0)); }
@Override public UserProvider create(KeycloakSession session) { EntityManager em = session.getProvider(JpaConnectionProvider.class).getEntityManager(); return new JpaUserProvider(session, em); }
@Override public void addConsent(RealmModel realm, String userId, UserConsentModel consent) { String clientId = consent.getClient().getId(); UserConsentEntity consentEntity = getGrantedConsentEntity(userId, clientId); if (consentEntity != null) { throw new ModelDuplicateException("Consent already exists for client [" + clientId + "] and user [" + userId + "]"); } long currentTime = Time.currentTimeMillis(); consentEntity = new UserConsentEntity(); consentEntity.setId(KeycloakModelUtils.generateId()); consentEntity.setUser(em.getReference(UserEntity.class, userId)); StorageId clientStorageId = new StorageId(clientId); if (clientStorageId.isLocal()) { consentEntity.setClientId(clientId); } else { consentEntity.setClientStorageProvider(clientStorageId.getProviderId()); consentEntity.setExternalClientId(clientStorageId.getExternalId()); } consentEntity.setCreatedDate(currentTime); consentEntity.setLastUpdatedDate(currentTime); em.persist(consentEntity); em.flush(); updateGrantedConsentEntity(consentEntity, consent); }
@Override public void updateFederatedIdentity(RealmModel realm, UserModel federatedUser, FederatedIdentityModel federatedIdentityModel) { FederatedIdentityEntity federatedIdentity = findFederatedIdentity(federatedUser, federatedIdentityModel.getIdentityProvider()); federatedIdentity.setToken(federatedIdentityModel.getToken()); em.persist(federatedIdentity); em.flush(); }
@Override public List<UserModel> getUsers(RealmModel realm, int firstResult, int maxResults) { return getUsers(realm, firstResult, maxResults, false); }
@Override public FederatedIdentityModel getFederatedIdentity(UserModel user, String identityProvider, RealmModel realm) { FederatedIdentityEntity entity = findFederatedIdentity(user, identityProvider); return (entity != null) ? new FederatedIdentityModel(entity.getIdentityProvider(), entity.getUserId(), entity.getUserName(), entity.getToken()) : null; }
@Override public List<UserModel> getUsers(RealmModel realm, boolean includeServiceAccounts) { return getUsers(realm, -1, -1, includeServiceAccounts); }