mirror of
https://github.com/keycloak/keycloak.git
synced 2025-12-30 11:29:57 -06:00
fix: consider identity provider models from third-party packages
This commit is contained in:
@@ -19,6 +19,9 @@ package org.keycloak.models.jpa;
|
||||
|
||||
import org.keycloak.Config;
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.broker.provider.IdentityProvider;
|
||||
import org.keycloak.broker.provider.IdentityProviderFactory;
|
||||
import org.keycloak.broker.social.SocialIdentityProvider;
|
||||
import org.keycloak.common.enums.SslRequired;
|
||||
import org.keycloak.common.util.MultivaluedHashMap;
|
||||
import org.keycloak.common.util.Time;
|
||||
@@ -1197,7 +1200,7 @@ public class RealmAdapter implements LegacyRealmModel, JpaModel<RealmEntity> {
|
||||
}
|
||||
|
||||
private IdentityProviderModel entityToModel(IdentityProviderEntity entity) {
|
||||
IdentityProviderModel identityProviderModel = new IdentityProviderModel();
|
||||
IdentityProviderModel identityProviderModel = getModelFromProviderFactory(entity.getProviderId());
|
||||
identityProviderModel.setProviderId(entity.getProviderId());
|
||||
identityProviderModel.setAlias(entity.getAlias());
|
||||
identityProviderModel.setDisplayName(entity.getDisplayName());
|
||||
@@ -1218,6 +1221,21 @@ public class RealmAdapter implements LegacyRealmModel, JpaModel<RealmEntity> {
|
||||
return identityProviderModel;
|
||||
}
|
||||
|
||||
private IdentityProviderModel getModelFromProviderFactory(String providerId) {
|
||||
Optional<IdentityProviderFactory> factory = Stream.concat(session.getKeycloakSessionFactory().getProviderFactoriesStream(IdentityProvider.class),
|
||||
session.getKeycloakSessionFactory().getProviderFactoriesStream(SocialIdentityProvider.class))
|
||||
.filter(providerFactory -> Objects.equals(providerFactory.getId(), providerId))
|
||||
.map(IdentityProviderFactory.class::cast)
|
||||
.findFirst();
|
||||
|
||||
if (factory.isPresent()) {
|
||||
return factory.get().createConfig();
|
||||
} else {
|
||||
logger.warn("Couldn't find a suitable identity provider factory for " + providerId);
|
||||
return new IdentityProviderModel();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IdentityProviderModel getIdentityProviderByAlias(String alias) {
|
||||
return getIdentityProvidersStream()
|
||||
|
||||
@@ -70,6 +70,8 @@ public class IdentityProviderModel implements Serializable {
|
||||
|
||||
private String displayName;
|
||||
|
||||
private String displayIconClasses;
|
||||
|
||||
private IdentityProviderSyncMode syncMode;
|
||||
|
||||
/**
|
||||
@@ -96,6 +98,7 @@ public class IdentityProviderModel implements Serializable {
|
||||
this.addReadTokenRoleOnCreate = model.addReadTokenRoleOnCreate;
|
||||
this.firstBrokerLoginFlowId = model.getFirstBrokerLoginFlowId();
|
||||
this.postBrokerLoginFlowId = model.getPostBrokerLoginFlowId();
|
||||
this.displayIconClasses = model.getDisplayIconClasses();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,7 +209,7 @@ public class IdentityProviderModel implements Serializable {
|
||||
}
|
||||
|
||||
public String getDisplayIconClasses() {
|
||||
return null;
|
||||
return displayIconClasses;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user