@Override public List<Stream> loadAllWithConfiguredAlertConditions() { final DBObject query = QueryBuilder.start().and( QueryBuilder.start(StreamImpl.EMBEDDED_ALERT_CONDITIONS).exists(true).get(), QueryBuilder.start(StreamImpl.EMBEDDED_ALERT_CONDITIONS).not().size(0).get() ).get(); return loadAll(query); }
private static DBObject getBlobQuery(String id, long lastMod) { QueryBuilder queryBuilder = new QueryBuilder(); if (id != null) { queryBuilder = queryBuilder.and(MongoBlob.KEY_ID).is(id); } if (lastMod > 0) { queryBuilder = queryBuilder.and(MongoBlob.KEY_LAST_MOD).lessThan(lastMod); } return queryBuilder.get(); }
@Override public List<Scope> findByResourceServer(Map<String, String[]> attributes, String resourceServerId, int firstResult, int maxResult) { QueryBuilder queryBuilder = new QueryBuilder() .and("resourceServerId").is(resourceServerId); attributes.forEach((name, value) -> { queryBuilder.and(name).regex(Pattern.compile(".*" + value[0] + ".*", Pattern.CASE_INSENSITIVE)); }); DBObject sort = new BasicDBObject("name", 1); return getMongoStore().loadEntities(ScopeEntity.class, queryBuilder.get(), sort, firstResult, maxResult, invocationContext).stream() .map(scope -> findById(scope.getId(), scope.getResourceServerId())).collect(toList()); }
@Override public List<Policy> findDependentPolicies(String policyId, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("associatedPolicies").is(policyId) .get(); return getMongoStore().loadEntities(PolicyEntity.class, query, getInvocationContext()).stream() .map(policyEntity -> findById(policyEntity.getId(), resourceServerId)) .collect(toList()); }
@Override public List<Resource> findByOwner(String ownerId, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("owner").is(ownerId) .get(); return getMongoStore().loadEntities(ResourceEntity.class, query, getInvocationContext()).stream() .map(scope -> findById(scope.getId(), resourceServerId)).collect(toList()); }
@Override public List<Resource> findByScope(List<String> id, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("scopes").in(id) .get(); return getMongoStore().loadEntities(ResourceEntity.class, query, getInvocationContext()).stream() .map(policyEntity -> findById(policyEntity.getId(), resourceServerId)) .collect(toList()); }
@Override public Resource findByName(String name, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("name").is(name) .get(); return getMongoStore().loadEntities(ResourceEntity.class, query, getInvocationContext()).stream() .map(policyEntity -> findById(policyEntity.getId(), resourceServerId)).findFirst().orElse(null); }
@Override public List<Policy> findByScopeIds(List<String> scopeIds, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("scopes").in(scopeIds) .get(); return getMongoStore().loadEntities(PolicyEntity.class, query, getInvocationContext()).stream() .map(policyEntity -> findById(policyEntity.getId(), resourceServerId)) .collect(toList()); }
@Override public List<String> getUsersByUserAttribute(RealmModel realm, String name, String value) { QueryBuilder queryBuilder = new QueryBuilder() .and("realmId").is(realm.getId()); queryBuilder.and("attributes." + name).is(value); List<FederatedUser> users = getMongoStore().loadEntities(FederatedUser.class, queryBuilder.get(), invocationContext); List<String> ids = new LinkedList<>(); for (FederatedUser user : users) ids.add(user.getId()); return ids; }
@Override public UserModel getUserByEmail(String email, RealmModel realm) { DBObject query = new QueryBuilder() .and("email").is(email.toLowerCase()) .and("realmId").is(realm.getId()) .get(); List<MongoUserEntity> users = getMongoStore().loadEntities(MongoUserEntity.class, query, invocationContext); if (users.isEmpty()) return null; ensureEmailConstraint(users, realm); return new UserAdapter(session, realm, users.get(0), invocationContext); }
@Override public List findByResourceServer(String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .get(); return getMongoStore().loadEntities(ResourceEntity.class, query, getInvocationContext()).stream() .map(scope -> findById(scope.getId(), resourceServerId)).collect(toList()); }
@Override public List<UserModel> getUsers(RealmModel realm, int firstResult, int maxResults, boolean includeServiceAccounts) { QueryBuilder queryBuilder = new QueryBuilder() .and("realmId").is(realm.getId()); if (!includeServiceAccounts) { queryBuilder = queryBuilder.and("serviceAccountClientLink").is(null); } DBObject query = queryBuilder.get(); DBObject sort = new BasicDBObject("username", 1); List<MongoUserEntity> users = getMongoStore().loadEntities(MongoUserEntity.class, query, sort, firstResult, maxResults, invocationContext); return convertUserEntities(realm, users); }
public static List<MongoRoleEntity> getAllScopesOfClient(ClientModel client, MongoStoreInvocationContext invContext) { ClientEntity scopedEntity = ((ClientAdapter)client).getMongoEntity(); List<String> scopeIds = scopedEntity.getScopeIds(); if (scopeIds == null || scopeIds.isEmpty()) { return Collections.emptyList(); } DBObject query = new QueryBuilder() .and("_id").in(scopeIds) .get(); return invContext.getMongoStore().loadEntities(MongoRoleEntity.class, query, invContext); } public static List<MongoRoleEntity> getAllScopesOfTemplate(ClientTemplateModel template, MongoStoreInvocationContext invContext) {
@Override public void preRemove(ProtocolMapperModel protocolMapper) { // Remove this protocol mapper from all consents, which has it DBObject query = new QueryBuilder() .and("grantedProtocolMappers").is(protocolMapper.getId()) .get(); DBObject pull = new BasicDBObject("$pull", query); getMongoStore().updateEntities(MongoUserConsentEntity.class, query, pull, invocationContext); }
@Override public CloseableIteration<Statement, QueryEvaluationException> queryIntervalEquals(final TemporalInterval query, final StatementConstraints constraints) throws QueryEvaluationException { final QueryBuilder qb = QueryBuilder.start(INTERVAL_START) .is(query.getHasBeginning().getAsDateTime().toDate()) .and(INTERVAL_END) .is(query.getHasEnd().getAsDateTime().toDate()); return withConstraints(constraints, qb.get()); }
@Override public Set<RoleModel> getClientRoles(RealmModel realm, ClientModel client) { DBObject query = new QueryBuilder() .and("clientId").is(client.getId()) .get(); List<MongoRoleEntity> roles = getMongoStore().loadEntities(MongoRoleEntity.class, query, invocationContext); Set<RoleModel> result = new HashSet<RoleModel>(); for (MongoRoleEntity role : roles) { result.add(session.realms().getRoleById(role.getId(), realm)); } return result; }
@Override public int getUsersCount(RealmModel realm) { DBObject query = new QueryBuilder() .and("realmId").is(realm.getId()) .get(); return getMongoStore().countEntities(MongoUserEntity.class, query, invocationContext); }
@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()); }
private void addRealmCodeSecret() { DBCollection realms = db.getCollection("realms"); DBObject query = new QueryBuilder() .and("codeSecret").is(null).get(); DBCursor objects = realms.find(query); while (objects.hasNext()) { DBObject object = objects.next(); object.put("codeSecret", KeycloakModelUtils.generateCodeSecret()); realms.save(object); log.debugv("Added realm.codeSecret, id={0}", object.get("id")); } }