Class AbstractUserProfileProvider<U extends UserProfileProvider>
- java.lang.Object
-
- org.keycloak.userprofile.AbstractUserProfileProvider<U>
-
- All Implemented Interfaces:
Provider,ProviderFactory<U>,UserProfileProvider,UserProfileProviderFactory<U>
- Direct Known Subclasses:
DeclarativeUserProfileProvider
public abstract class AbstractUserProfileProvider<U extends UserProfileProvider> extends Object implements UserProfileProvider, UserProfileProviderFactory<U>
A base class for
UserProfileProviderimplementations providing the main hooks for customizations.- Author:
- Markus Till
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<UserProfileContext,UserProfileMetadata>contextualMetadataRegistryprotected KeycloakSessionsession
-
Constructor Summary
Constructors Constructor Description AbstractUserProfileProvider()AbstractUserProfileProvider(KeycloakSession session, Map<UserProfileContext,UserProfileMetadata> contextualMetadataRegistry)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidclose()This is called when the server shuts down.protected UserProfileMetadataconfigureUserProfile(UserProfileMetadata metadata)Sub-types can override this method to customize how contextual profile metadata is configured at init time.protected UserProfileMetadataconfigureUserProfile(UserProfileMetadata metadata, KeycloakSession session)Sub-types can override this method to customize how contextual profile metadata is configured at runtime.Ucreate(KeycloakSession session)protected abstract Ucreate(KeycloakSession session, Map<UserProfileContext,UserProfileMetadata> metadataRegistry)Subclasses can override this method to create their instances ofUserProfileProvider.UserProfilecreate(UserProfileContext context, Map<String,?> attributes)UserProfilecreate(UserProfileContext context, Map<String,?> attributes, UserModel user)UserProfilecreate(UserProfileContext context, UserModel user)Creates a newUserProfileinstance only for validation purposes to check whether its attributes are in conformance with the givencontextand profile configuration.protected AttributescreateAttributes(UserProfileContext context, Map<String,?> attributes, UserModel user, UserProfileMetadata metadata)StringgetConfiguration()Get current UserProfile configuration.static PatterngetRegexPatternString(String[] builtinReadOnlyAttributes)voidinit(Config.Scope config)Only called once when the factory is first created.voidpostInit(KeycloakSessionFactory factory)Called after all provider factories have been initializedvoidsetConfiguration(String configuration)Set new UserProfile configuration.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.keycloak.provider.ProviderFactory
getConfigMetadata, getId, order
-
-
-
-
Field Detail
-
contextualMetadataRegistry
protected final Map<UserProfileContext,UserProfileMetadata> contextualMetadataRegistry
-
session
protected final KeycloakSession session
-
-
Constructor Detail
-
AbstractUserProfileProvider
public AbstractUserProfileProvider()
-
AbstractUserProfileProvider
public AbstractUserProfileProvider(KeycloakSession session, Map<UserProfileContext,UserProfileMetadata> contextualMetadataRegistry)
-
-
Method Detail
-
getRegexPatternString
public static Pattern getRegexPatternString(String[] builtinReadOnlyAttributes)
-
create
public UserProfile create(UserProfileContext context, UserModel user)
Description copied from interface:UserProfileProviderCreates a new
UserProfileinstance only for validation purposes to check whether its attributes are in conformance with the givencontextand profile configuration.- Specified by:
createin interfaceUserProfileProvider- Parameters:
context- the contextuser- an existing user- Returns:
- the user profile instance
-
create
public UserProfile create(UserProfileContext context, Map<String,?> attributes, UserModel user)
Description copied from interface:UserProfileProviderCreates a new
UserProfileinstance for a givencontextandattributesfor update purposes.Instances created from this method are going to run validations and updates based on the given
user. This might be useful when updating an existing user.- Specified by:
createin interfaceUserProfileProvider- Parameters:
context- the contextattributes- the attributes to associate with the instance returned from this methoduser- the user to eventually update with the givenattributes- Returns:
- the user profile instance
-
create
public UserProfile create(UserProfileContext context, Map<String,?> attributes)
Description copied from interface:UserProfileProviderCreates a new
UserProfileinstance for a givencontextandattributesfor validation purposes.Instances created from this method are usually related to contexts where validation and updates are performed in different steps, or when creating new users based on the given
attributes.- Specified by:
createin interfaceUserProfileProvider- Parameters:
context- the contextattributes- the attributes to associate with the instance returned from this method- Returns:
- the user profile instance
-
create
public U create(KeycloakSession session)
- Specified by:
createin interfaceProviderFactory<U extends UserProfileProvider>
-
init
public void init(Config.Scope config)
Description copied from interface:ProviderFactoryOnly called once when the factory is first created. This config is pulled from keycloak_server.json- Specified by:
initin interfaceProviderFactory<U extends UserProfileProvider>
-
postInit
public void postInit(KeycloakSessionFactory factory)
Description copied from interface:ProviderFactoryCalled after all provider factories have been initialized- Specified by:
postInitin interfaceProviderFactory<U extends UserProfileProvider>
-
close
public void close()
Description copied from interface:ProviderFactoryThis is called when the server shuts down.- Specified by:
closein interfaceProvider- Specified by:
closein interfaceProviderFactory<U extends UserProfileProvider>
-
getConfiguration
public String getConfiguration()
Description copied from interface:UserProfileProviderGet current UserProfile configuration. JSON formatted file is expected, but depends on the implementation.- Specified by:
getConfigurationin interfaceUserProfileProvider- Returns:
- current UserProfile configuration
- See Also:
UserProfileProvider.setConfiguration(String)
-
setConfiguration
public void setConfiguration(String configuration)
Description copied from interface:UserProfileProviderSet new UserProfile configuration. It is persisted inside of the provider.- Specified by:
setConfigurationin interfaceUserProfileProvider- Parameters:
configuration- to be set- See Also:
UserProfileProvider.getConfiguration()
-
create
protected abstract U create(KeycloakSession session, Map<UserProfileContext,UserProfileMetadata> metadataRegistry)
Subclasses can override this method to create their instances ofUserProfileProvider.- Parameters:
session- the sessionmetadataRegistry- the profile metadata- Returns:
- the profile provider instance
-
configureUserProfile
protected UserProfileMetadata configureUserProfile(UserProfileMetadata metadata)
Sub-types can override this method to customize how contextual profile metadata is configured at init time.- Parameters:
metadata- the profile metadata- Returns:
- the metadata
-
configureUserProfile
protected UserProfileMetadata configureUserProfile(UserProfileMetadata metadata, KeycloakSession session)
Sub-types can override this method to customize how contextual profile metadata is configured at runtime.- Parameters:
metadata- the profile metadatasession- the current session- Returns:
- the metadata
-
createAttributes
protected Attributes createAttributes(UserProfileContext context, Map<String,?> attributes, UserModel user, UserProfileMetadata metadata)
-
-