broker mapper datamodel
This commit is contained in:
1 parent
e795bdc16c
commit
335832d553
17 files changed
+789
-9
No files matched your search
+132
@@ -6,6 +6,7 @@ import org.keycloak.connections.mongo.api.context.MongoStoreInvocationContext;
|
||||
import org.keycloak.enums.SslRequired;
|
||||
import org.keycloak.models.ApplicationModel;
|
||||
import org.keycloak.models.ClientModel;
|
||||
import org.keycloak.models.IdentityProviderMapperModel;
|
||||
import org.keycloak.models.IdentityProviderModel;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.OAuthClientModel;
|
||||
@@ -16,6 +17,7 @@ import org.keycloak.models.RequiredCredentialModel;
|
||||
import org.keycloak.models.RoleModel;
|
||||
import org.keycloak.models.UserFederationProviderModel;
|
||||
import org.keycloak.models.entities.IdentityProviderEntity;
|
||||
import org.keycloak.models.entities.IdentityProviderMapperEntity;
|
||||
import org.keycloak.models.entities.RequiredCredentialEntity;
|
||||
import org.keycloak.models.entities.UserFederationProviderEntity;
|
||||
import org.keycloak.models.mongo.keycloak.entities.MongoApplicationEntity;
|
||||
@@ -1133,4 +1135,134 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
|
||||
realm.setDefaultLocale(locale);
|
||||
updateRealm();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<IdentityProviderMapperModel> getIdentityProviderMappers() {
|
||||
Set<IdentityProviderMapperModel> mappings = new HashSet<IdentityProviderMapperModel>();
|
||||
for (IdentityProviderMapperEntity entity : getMongoEntity().getIdentityProviderMappers()) {
|
||||
IdentityProviderMapperModel mapping = new IdentityProviderMapperModel();
|
||||
mapping.setId(entity.getId());
|
||||
mapping.setName(entity.getName());
|
||||
mapping.setIdentityProviderAlias(entity.getIdentityProviderAlias());
|
||||
mapping.setIdentityProviderMapper(entity.getIdentityProviderMapper());
|
||||
Map<String, String> config = new HashMap<String, String>();
|
||||
if (entity.getConfig() != null) {
|
||||
config.putAll(entity.getConfig());
|
||||
}
|
||||
mapping.setConfig(config);
|
||||
mappings.add(mapping);
|
||||
}
|
||||
return mappings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<IdentityProviderMapperModel> getIdentityProviderMappersByAlias(String brokerAlias) {
|
||||
Set<IdentityProviderMapperModel> mappings = new HashSet<IdentityProviderMapperModel>();
|
||||
for (IdentityProviderMapperEntity entity : getMongoEntity().getIdentityProviderMappers()) {
|
||||
if (!entity.getIdentityProviderAlias().equals(brokerAlias)) {
|
||||
continue;
|
||||
}
|
||||
IdentityProviderMapperModel mapping = new IdentityProviderMapperModel();
|
||||
mapping.setId(entity.getId());
|
||||
mapping.setName(entity.getName());
|
||||
mapping.setIdentityProviderAlias(entity.getIdentityProviderAlias());
|
||||
mapping.setIdentityProviderMapper(entity.getIdentityProviderMapper());
|
||||
Map<String, String> config = new HashMap<String, String>();
|
||||
if (entity.getConfig() != null) {
|
||||
config.putAll(entity.getConfig());
|
||||
}
|
||||
mapping.setConfig(config);
|
||||
mappings.add(mapping);
|
||||
}
|
||||
return mappings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IdentityProviderMapperModel addIdentityProviderMapper(IdentityProviderMapperModel model) {
|
||||
if (getIdentityProviderMapperByName(model.getIdentityProviderAlias(), model.getIdentityProviderMapper()) != null) {
|
||||
throw new RuntimeException("protocol mapper name must be unique per protocol");
|
||||
}
|
||||
String id = KeycloakModelUtils.generateId();
|
||||
IdentityProviderMapperEntity entity = new IdentityProviderMapperEntity();
|
||||
entity.setId(id);
|
||||
entity.setName(model.getName());
|
||||
entity.setIdentityProviderAlias(model.getIdentityProviderAlias());
|
||||
entity.setIdentityProviderMapper(model.getIdentityProviderMapper());
|
||||
entity.setConfig(model.getConfig());
|
||||
|
||||
getMongoEntity().getIdentityProviderMappers().add(entity);
|
||||
updateMongoEntity();
|
||||
return entityToModel(entity);
|
||||
}
|
||||
|
||||
protected IdentityProviderMapperEntity getIdentityProviderMapperEntity(String id) {
|
||||
for (IdentityProviderMapperEntity entity : getMongoEntity().getIdentityProviderMappers()) {
|
||||
if (entity.getId().equals(id)) {
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
protected IdentityProviderMapperEntity getIdentityProviderMapperEntityByName(String alias, String name) {
|
||||
for (IdentityProviderMapperEntity entity : getMongoEntity().getIdentityProviderMappers()) {
|
||||
if (entity.getIdentityProviderAlias().equals(alias) && entity.getName().equals(name)) {
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeIdentityProviderMapper(IdentityProviderMapperModel mapping) {
|
||||
IdentityProviderMapperEntity toDelete = getIdentityProviderMapperEntity(mapping.getId());
|
||||
if (toDelete != null) {
|
||||
this.realm.getIdentityProviderMappers().remove(toDelete);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateIdentityProviderMapper(IdentityProviderMapperModel mapping) {
|
||||
IdentityProviderMapperEntity entity = getIdentityProviderMapperEntity(mapping.getId());
|
||||
entity.setIdentityProviderAlias(mapping.getIdentityProviderAlias());
|
||||
entity.setIdentityProviderMapper(mapping.getIdentityProviderMapper());
|
||||
if (entity.getConfig() == null) {
|
||||
entity.setConfig(mapping.getConfig());
|
||||
} else {
|
||||
entity.getConfig().clear();
|
||||
entity.getConfig().putAll(mapping.getConfig());
|
||||
}
|
||||
updateMongoEntity();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public IdentityProviderMapperModel getIdentityProviderMapperById(String id) {
|
||||
IdentityProviderMapperEntity entity = getIdentityProviderMapperEntity(id);
|
||||
if (entity == null) return null;
|
||||
return entityToModel(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IdentityProviderMapperModel getIdentityProviderMapperByName(String alias, String name) {
|
||||
IdentityProviderMapperEntity entity = getIdentityProviderMapperEntityByName(alias, name);
|
||||
if (entity == null) return null;
|
||||
return entityToModel(entity);
|
||||
}
|
||||
|
||||
protected IdentityProviderMapperModel entityToModel(IdentityProviderMapperEntity entity) {
|
||||
IdentityProviderMapperModel mapping = new IdentityProviderMapperModel();
|
||||
mapping.setId(entity.getId());
|
||||
mapping.setName(entity.getName());
|
||||
mapping.setIdentityProviderAlias(entity.getIdentityProviderAlias());
|
||||
mapping.setIdentityProviderMapper(entity.getIdentityProviderMapper());
|
||||
Map<String, String> config = new HashMap<String, String>();
|
||||
if (entity.getConfig() != null) config.putAll(entity.getConfig());
|
||||
mapping.setConfig(config);
|
||||
return mapping;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user