private List<RealmModel> getRealms(TypedQuery<String> query) { List<String> entities = query.getResultList(); List<RealmModel> realms = new ArrayList<RealmModel>(); for (String id : entities) { RealmModel realm = session.realms().getRealm(id); if (realm != null) realms.add(realm); } return realms; }
@Override public RealmModel getRealmByName(String name) { TypedQuery<String> query = em.createNamedQuery("getRealmIdByName", String.class); query.setParameter("name", name); List<String> entities = query.getResultList(); if (entities.isEmpty()) return null; if (entities.size() > 1) throw new IllegalStateException("Should not be more than one realm with same name"); String id = query.getResultList().get(0); return session.realms().getRealm(id); }
protected boolean isUpdated() { if (updated != null) return true; if (!invalidated) return false; updated = cacheSession.getRealmDelegate().getRealm(cached.getId()); if (updated == null) throw new IllegalStateException("Not found in database"); return true; }
@GET @Path("/verify-code") @Produces(MediaType.APPLICATION_JSON) public String verifyCode(@QueryParam("realm") String realmName, @QueryParam("code") String code) { RealmModel realm = session.realms().getRealm(realmName); try { ClientSessionCode accessCode = ClientSessionCode.parse(code, session, realm); if (accessCode == null) { throw new AssertionError("Invalid code"); } return accessCode.getClientSession().getId(); } catch (Throwable t) { throw new AssertionError("Failed to parse code", t); } }
@GET @Path("/valid-credentials") @Produces(MediaType.APPLICATION_JSON) public boolean validCredentials(@QueryParam("realmName") String realmName, @QueryParam("userName") String userName, @QueryParam("password") String password) { RealmModel realm = session.realms().getRealm(realmName); if (realm == null) return false; UserProvider userProvider = session.getProvider(UserProvider.class); UserModel user = userProvider.getUserByUsername(userName, realm); return userProvider.validCredentials(session, realm, user, UserCredentialModel.password(password)); }
@Override public RealmModel getRealm() { return session.realms().getRealm(entity.getRealmId()); }
@Override public RealmModel getRealm() { return session.realms().getRealm(entity.getRealmId()); }
@Override public List<RealmModel> getRealms() { DBObject query = new BasicDBObject(); List<MongoRealmEntity> realms = getMongoStore().loadEntities(MongoRealmEntity.class, query, invocationContext); List<RealmModel> results = new ArrayList<RealmModel>(); for (MongoRealmEntity realmEntity : realms) { RealmModel realm = session.realms().getRealm(realmEntity.getId()); if (realm != null) results.add(realm); } return results; }
@Override public ClientSessionModel getClientSession(String id) { ClientSessionEntity clientSession = em.find(ClientSessionEntity.class, id); if (clientSession != null) { RealmModel realm = session.realms().getRealm(clientSession.getRealmId()); return new ClientSessionAdapter(session, em, realm, clientSession); } return null; }
@Override public ClientSessionModel getClientSession(String id) { ClientSessionEntity entity = clientSessions.get(id); if (entity != null) { RealmModel realm = session.realms().getRealm(entity.getRealmId()); return new ClientSessionAdapter(session, this, realm, entity); } return null; }
protected void getDelegateForUpdate() { if (updated == null) { cacheSession.registerRealmInvalidation(getId()); updated = cacheSession.getDelegate().getRealm(getId()); if (updated == null) throw new IllegalStateException("Not found in database"); } }
private PersistentUserSessionAdapter toAdapter(PersistentUserSessionEntity entity) { RealmModel realm = session.realms().getRealm(entity.getRealmId()); return toAdapter(realm, entity); }
public void addTask(K key, SessionUpdateTask<V> task, V entity) { if (entity == null) { throw new IllegalArgumentException("Null entity not allowed"); } RealmModel realm = kcSession.realms().getRealm(entity.getRealmId()); SessionEntityWrapper<V> wrappedEntity = new SessionEntityWrapper<>(entity); SessionUpdatesList<V> myUpdates = new SessionUpdatesList<>(realm, wrappedEntity); updates.put(key, myUpdates); // Run the update now, so reader in same transaction can see it task.runUpdate(entity); myUpdates.add(task); }
@Override public RealmModel getDelegateForUpdate() { if (updated == null) { cacheSession.registerRealmInvalidation(cached.getId(), cached.getName()); updated = cacheSession.getRealmDelegate().getRealm(cached.getId()); if (updated == null) throw new IllegalStateException("Not found in database"); } return updated; }
@Override public ClientSessionModel getClientSession(String id) { ClientSessionEntity entity = (ClientSessionEntity) sessionCache.get(id); // Chance created in this transaction if (entity == null) { entity = (ClientSessionEntity) tx.get(sessionCache, id); } if (entity != null) { RealmModel realm = session.realms().getRealm(entity.getRealm()); return wrap(realm, entity, false); } return null; }
@Override public ClientModel getMasterAdminClient() { ClientEntity masterAdminClient = realm.getMasterAdminClient(); if (masterAdminClient == null) { return null; } RealmModel masterRealm = null; String masterAdminClientRealmId = masterAdminClient.getRealm().getId(); if (masterAdminClientRealmId.equals(getId())) { masterRealm = this; } else { masterRealm = session.realms().getRealm(masterAdminClientRealmId); } return session.realms().getClientById(masterAdminClient.getId(), masterRealm); }
@Override public void onEvent(Event event) { if (includedEvents.contains(event.getEvent())) { if (event.getRealmId() != null && event.getUserId() != null) { RealmModel realm = model.getRealm(event.getRealmId()); UserModel user = session.users().getUserById(event.getUserId(), realm); if (user != null && user.getEmail() != null && user.isEmailVerified()) { try { emailProvider.setRealm(realm).setUser(user).sendEvent(event); } catch (EmailException e) { log.error("Failed to send event mail", e); } } } } }
@Override public void onEvent(Event event) { if (includedEvents.contains(event.getType())) { if (event.getRealmId() != null && event.getUserId() != null) { RealmModel realm = model.getRealm(event.getRealmId()); UserModel user = session.users().getUserById(event.getUserId(), realm); if (user != null && user.getEmail() != null && user.isEmailVerified()) { try { emailTemplateProvider.setRealm(realm).setUser(user).sendEvent(event); } catch (EmailException e) { log.error("Failed to send type mail", e); } } } } }
@Override public RealmModel getRealmByName(String name) { DBObject query = new QueryBuilder() .and("name").is(name) .get(); MongoRealmEntity realm = getMongoStore().loadSingleEntity(MongoRealmEntity.class, query, invocationContext); if (realm == null) return null; return session.realms().getRealm(realm.getId()); }
protected void deleteInvalidUser(RealmModel realm, UserModel user) { KeycloakSession tx = session.getKeycloakSessionFactory().create(); try { tx.getTransaction().begin(); RealmModel realmModel = tx.realms().getRealm(realm.getId()); if (realmModel == null) return; UserModel deletedUser = tx.userStorage().getUserById(user.getId(), realmModel); tx.userStorage().removeUser(realmModel, deletedUser); logger.debugf("Removed invalid user '%s'", user.getUsername()); tx.getTransaction().commit(); } finally { tx.close(); } }