Package org.keycloak.userprofile
Class DeclarativeUserProfileProvider
java.lang.Object
org.keycloak.userprofile.AbstractUserProfileProvider<UserProfileProvider>
org.keycloak.userprofile.DeclarativeUserProfileProvider
- All Implemented Interfaces:
AmphibianProviderFactory<UserProfileProvider>,ComponentFactory<UserProfileProvider,,UserProfileProvider> ConfiguredProvider,Provider,ProviderFactory<UserProfileProvider>,UserProfileProvider,UserProfileProviderFactory<UserProfileProvider>
public class DeclarativeUserProfileProvider
extends AbstractUserProfileProvider<UserProfileProvider>
implements AmphibianProviderFactory<UserProfileProvider>
UserProfileProvider loading configuration from the changeable JSON file stored in component config. Parsed
configuration is cached.- Author:
- Pedro Igor, Vlastimil Elias <velias@redhat.com>
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final intstatic final Stringstatic final StringFields inherited from class org.keycloak.userprofile.AbstractUserProfileProvider
CONFIG_ADMIN_READ_ONLY_ATTRIBUTES, CONFIG_READ_ONLY_ATTRIBUTES, contextualMetadataRegistry, session -
Constructor Summary
ConstructorsConstructorDescriptionDeclarativeUserProfileProvider(KeycloakSession session, Map<UserProfileContext, UserProfileMetadata> metadataRegistry, String defaultRawConfig) -
Method Summary
Modifier and TypeMethodDescriptionprotected UserProfileMetadataconfigureUserProfile(UserProfileMetadata metadata, KeycloakSession session) Sub-types can override this method to customize how contextual profile metadata is configured at runtime.protected UserProfileProvidercreate(KeycloakSession session, Map<UserProfileContext, UserProfileMetadata> metadataRegistry) Subclasses can override this method to create their instances ofUserProfileProvider.protected AttributescreateAttributes(UserProfileContext context, Map<String, ?> attributes, UserModel user, UserProfileMetadata metadata) protected ComponentModelCreate the component model to store configurationprotected AttributeValidatorMetadatacreateConfiguredValidator(String validator, Map<String, Object> validatorConfig) Create validator for validation configured in the user profile config.protected UserProfileMetadatadecorateUserProfileForCache(UserProfileMetadata decoratedMetadata, ComponentModel model) Decorate basic metadata provided fromAbstractUserProfileProviderbased on 'per realm' configuration.getId()protected UPConfiggetParsedConfig(ComponentModel model) Get parsed config file configured in model.voidinit(Config.Scope config) intorder()voidsetConfiguration(String configuration) voidvalidateConfiguration(KeycloakSession session, RealmModel realm, ComponentModel model) Methods inherited from class org.keycloak.userprofile.AbstractUserProfileProvider
close, configureUserProfile, create, create, create, create, getConfigMetadata, getRegexPatternString, postInitMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.keycloak.component.AmphibianProviderFactory
close, create, create, onUpdate, preRemoveMethods inherited from interface org.keycloak.component.ComponentFactory
getCommonProviderConfigProperties, getTypeMetadata, onCreateMethods inherited from interface org.keycloak.provider.ConfiguredProvider
getConfigMethods inherited from interface org.keycloak.provider.ProviderFactory
getConfigMetadata, postInit
-
Field Details
-
ID
- See Also:
-
PROVIDER_PRIORITY
public static final int PROVIDER_PRIORITY- See Also:
-
UP_PIECES_COUNT_COMPONENT_CONFIG_KEY
- See Also:
-
REALM_USER_PROFILE_ENABLED
- See Also:
-
-
Constructor Details
-
DeclarativeUserProfileProvider
public DeclarativeUserProfileProvider() -
DeclarativeUserProfileProvider
public DeclarativeUserProfileProvider(KeycloakSession session, Map<UserProfileContext, UserProfileMetadata> metadataRegistry, String defaultRawConfig)
-
-
Method Details
-
getId
- Specified by:
getIdin interfaceProviderFactory<UserProfileProvider>
-
create
protected UserProfileProvider create(KeycloakSession session, Map<UserProfileContext, UserProfileMetadata> metadataRegistry) Description copied from class:AbstractUserProfileProviderSubclasses can override this method to create their instances ofUserProfileProvider.- Specified by:
createin classAbstractUserProfileProvider<UserProfileProvider>- Parameters:
session- the sessionmetadataRegistry- the profile metadata- Returns:
- the profile provider instance
-
createAttributes
protected Attributes createAttributes(UserProfileContext context, Map<String, ?> attributes, UserModel user, UserProfileMetadata metadata) - Overrides:
createAttributesin classAbstractUserProfileProvider<UserProfileProvider>
-
configureUserProfile
protected UserProfileMetadata configureUserProfile(UserProfileMetadata metadata, KeycloakSession session) Description copied from class:AbstractUserProfileProviderSub-types can override this method to customize how contextual profile metadata is configured at runtime.- Overrides:
configureUserProfilein classAbstractUserProfileProvider<UserProfileProvider>- Parameters:
metadata- the profile metadatasession- the current session- Returns:
- the metadata
-
getHelpText
- Specified by:
getHelpTextin interfaceConfiguredProvider
-
validateConfiguration
public void validateConfiguration(KeycloakSession session, RealmModel realm, ComponentModel model) throws ComponentValidationException - Specified by:
validateConfigurationin interfaceComponentFactory<UserProfileProvider,UserProfileProvider> - Throws:
ComponentValidationException
-
getConfiguration
- Specified by:
getConfigurationin interfaceUserProfileProvider- Overrides:
getConfigurationin classAbstractUserProfileProvider<UserProfileProvider>
-
setConfiguration
- Specified by:
setConfigurationin interfaceUserProfileProvider- Overrides:
setConfigurationin classAbstractUserProfileProvider<UserProfileProvider>
-
getConfigProperties
- Specified by:
getConfigPropertiesin interfaceAmphibianProviderFactory<UserProfileProvider>- Specified by:
getConfigPropertiesin interfaceConfiguredProvider
-
init
- Specified by:
initin interfaceProviderFactory<UserProfileProvider>- Overrides:
initin classAbstractUserProfileProvider<UserProfileProvider>
-
order
public int order()- Specified by:
orderin interfaceProviderFactory<UserProfileProvider>
-
getComponentModel
-
decorateUserProfileForCache
protected UserProfileMetadata decorateUserProfileForCache(UserProfileMetadata decoratedMetadata, ComponentModel model) Decorate basic metadata provided fromAbstractUserProfileProviderbased on 'per realm' configuration. This method is called for eachUserProfileContextin each realm, and metadata are cached then and this method is called again only if configuration changes.- Parameters:
decoratedMetadata- base to be decorated based on configuration loaded from component modelmodel- component model to get "per realm" configuration from- Returns:
- decorated metadata
-
getParsedConfig
Get parsed config file configured in model. Default one used if not configured.- Parameters:
model- to take config from- Returns:
- parsed configuration
-
createComponentModel
Create the component model to store configuration- Returns:
- component model
-
createConfiguredValidator
protected AttributeValidatorMetadata createConfiguredValidator(String validator, Map<String, Object> validatorConfig) Create validator for validation configured in the user profile config.- Parameters:
validator- id to create validator forvalidatorConfig- of the validator- Returns:
- validator metadata to run given validation
-