Class FreeMarkerLoginFormsProvider
- java.lang.Object
-
- org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider
-
- All Implemented Interfaces:
LoginFormsProvider,Provider
public class FreeMarkerLoginFormsProvider extends Object implements LoginFormsProvider
- Author:
- Stian Thorgersen
-
-
Field Summary
Fields Modifier and Type Field Description protected StringaccessCodeprotected URIactionUriprotected Map<String,Object>attributesprotected AuthenticationSessionModelauthenticationSessionauthenticationSession can be null for some renderings, mainly error pagesprotected ClientModelclientprotected List<AuthorizationDetails>clientScopesRequestedprotected AuthenticationFlowContextcontextprotected Stringexecutionprotected javax.ws.rs.core.MultivaluedMap<String,String>formDataprotected FreeMarkerProviderfreeMarkerprotected Map<String,String>httpResponseHeadersprotected List<FormMessage>messagesprotected MessageTypemessageTypeprotected RealmModelrealmprotected KeycloakSessionsessionprotected javax.ws.rs.core.Response.Statusstatusprotected javax.ws.rs.core.UriInfouriInfoprotected UserModeluser-
Fields inherited from interface org.keycloak.forms.login.LoginFormsProvider
IDENTITY_PROVIDER_BROKER_CONTEXT, REGISTRATION_DISABLED, UPDATE_PROFILE_CONTEXT_ATTR, USERNAME_HIDDEN
-
-
Constructor Summary
Constructors Constructor Description FreeMarkerLoginFormsProvider(KeycloakSession session)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description LoginFormsProvideraddError(FormMessage errorMessage)voidaddScript(String scriptUrl)Adds a script to the html headerLoginFormsProvideraddSuccess(FormMessage errorMessage)Add a success message to the formvoidclose()javax.ws.rs.core.ResponsecreateCode()protected voidcreateCommonAttributes(Theme theme, Locale locale, Properties messagesBundle, javax.ws.rs.core.UriBuilder baseUriBuilder, LoginFormsPages page)Create common attributes used in all templates.javax.ws.rs.core.ResponsecreateErrorPage(javax.ws.rs.core.Response.Status status)javax.ws.rs.core.ResponsecreateForm(String form)javax.ws.rs.core.ResponsecreateFrontChannelLogoutPage()javax.ws.rs.core.ResponsecreateIdpLinkConfirmLinkPage()javax.ws.rs.core.ResponsecreateIdpLinkEmailPage()javax.ws.rs.core.ResponsecreateInfoPage()javax.ws.rs.core.ResponsecreateLoginExpiredPage()javax.ws.rs.core.ResponsecreateLoginPassword()javax.ws.rs.core.ResponsecreateLoginRecoveryAuthnCode()javax.ws.rs.core.ResponsecreateLoginTotp()javax.ws.rs.core.ResponsecreateLoginUsername()javax.ws.rs.core.ResponsecreateLoginUsernamePassword()javax.ws.rs.core.ResponsecreateLoginWebAuthn()javax.ws.rs.core.ResponsecreateLogoutConfirmPage()javax.ws.rs.core.ResponsecreateOAuth2DeviceVerifyUserCodePage()javax.ws.rs.core.ResponsecreateOAuthGrant()javax.ws.rs.core.ResponsecreatePasswordReset()javax.ws.rs.core.ResponsecreateRegistration()protected javax.ws.rs.core.ResponsecreateResponse(LoginFormsPages page)javax.ws.rs.core.ResponsecreateResponse(UserModel.RequiredAction action)javax.ws.rs.core.ResponsecreateSamlPostForm()javax.ws.rs.core.ResponsecreateSelectAuthenticator()javax.ws.rs.core.ResponsecreateUpdateProfilePage()javax.ws.rs.core.ResponsecreateWebAuthnErrorPage()javax.ws.rs.core.ResponsecreateX509ConfirmPage()protected StringformatMessage(FormMessage message, Properties messagesBundle, Locale locale)protected StringgetFirstMessageUnformatted()StringgetMessage(String message)protected ThemegetTheme()Get Theme used for page rendering.protected voidhandleMessages(Locale locale, Properties messagesBundle)Handle messages to be shown on the page - set them to template attributesprotected PropertieshandleThemeResources(Theme theme, Locale locale)Load message bundle and place it intomsgtemplate attribute.protected javax.ws.rs.core.UriBuilderprepareBaseUriBuilder(boolean resetRequestUriParams)Prepare base uri builder for later useprotected javax.ws.rs.core.ResponseprocessTemplate(Theme theme, String templateName, Locale locale)Process FreeMarker template and prepare Response.LoginFormsProvidersetAccessRequest(List<AuthorizationDetails> clientScopesRequested)LoginFormsProvidersetActionUri(URI actionUri)LoginFormsProvidersetAttribute(String name, Object value)LoginFormsProvidersetAuthContext(AuthenticationFlowContext context)LoginFormsProvidersetAuthenticationSession(AuthenticationSessionModel authenticationSession)LoginFormsProvidersetClientSessionCode(String accessCode)FreeMarkerLoginFormsProvidersetError(String message, Object... parameters)Set one global error message.LoginFormsProvidersetErrors(List<FormMessage> messages)Set multiple error messages.LoginFormsProvidersetExecution(String execution)FreeMarkerLoginFormsProvidersetFormData(javax.ws.rs.core.MultivaluedMap<String,String> formData)FreeMarkerLoginFormsProvidersetInfo(String message, Object... parameters)protected voidsetMessage(MessageType type, String message, Object... parameters)LoginFormsProvidersetResponseHeader(String headerName, String headerValue)LoginFormsProvidersetStatus(javax.ws.rs.core.Response.Status status)FreeMarkerLoginFormsProvidersetSuccess(String message, Object... parameters)FreeMarkerLoginFormsProvidersetUser(UserModel user)
-
-
-
Field Detail
-
accessCode
protected String accessCode
-
status
protected javax.ws.rs.core.Response.Status status
-
clientScopesRequested
protected List<AuthorizationDetails> clientScopesRequested
-
actionUri
protected URI actionUri
-
execution
protected String execution
-
context
protected AuthenticationFlowContext context
-
messages
protected List<FormMessage> messages
-
messageType
protected MessageType messageType
-
session
protected KeycloakSession session
-
authenticationSession
protected AuthenticationSessionModel authenticationSession
authenticationSession can be null for some renderings, mainly error pages
-
realm
protected RealmModel realm
-
client
protected ClientModel client
-
uriInfo
protected javax.ws.rs.core.UriInfo uriInfo
-
freeMarker
protected FreeMarkerProvider freeMarker
-
user
protected UserModel user
-
-
Constructor Detail
-
FreeMarkerLoginFormsProvider
public FreeMarkerLoginFormsProvider(KeycloakSession session)
-
-
Method Detail
-
addScript
public void addScript(String scriptUrl)
Description copied from interface:LoginFormsProviderAdds a script to the html header- Specified by:
addScriptin interfaceLoginFormsProvider
-
createResponse
public javax.ws.rs.core.Response createResponse(UserModel.RequiredAction action)
- Specified by:
createResponsein interfaceLoginFormsProvider
-
createResponse
protected javax.ws.rs.core.Response createResponse(LoginFormsPages page)
-
createForm
public javax.ws.rs.core.Response createForm(String form)
- Specified by:
createFormin interfaceLoginFormsProvider
-
prepareBaseUriBuilder
protected javax.ws.rs.core.UriBuilder prepareBaseUriBuilder(boolean resetRequestUriParams)
Prepare base uri builder for later use- Parameters:
resetRequestUriParams- - for some reason Resteasy 2.3.7 doesn't like query params and form params with the same name and will null out the code form param, so we have to reset them for some pages- Returns:
- base uri builder
-
getTheme
protected Theme getTheme() throws IOException
Get Theme used for page rendering.- Returns:
- theme for page rendering, never null
- Throws:
IOException- in case of Theme loading problem
-
handleThemeResources
protected Properties handleThemeResources(Theme theme, Locale locale)
Load message bundle and place it intomsgtemplate attribute. Also load Theme properties and place them intopropertiestemplate attribute.- Parameters:
theme- actual Theme to load bundle fromlocale- to load bundle for- Returns:
- message bundle for other use
-
handleMessages
protected void handleMessages(Locale locale, Properties messagesBundle)
Handle messages to be shown on the page - set them to template attributes- Parameters:
locale- to be used for message text loadingmessagesBundle- to be used for message text loading- See Also:
messageType,messages
-
getMessage
public String getMessage(String message)
- Specified by:
getMessagein interfaceLoginFormsProvider
-
createCommonAttributes
protected void createCommonAttributes(Theme theme, Locale locale, Properties messagesBundle, javax.ws.rs.core.UriBuilder baseUriBuilder, LoginFormsPages page)
Create common attributes used in all templates.- Parameters:
theme- actual Theme used (provided bygetTheme())locale- actual localemessagesBundle- actual message bundle (provided byhandleThemeResources())baseUriBuilder- actual base uri builder (provided byprepareBaseUriBuilder())page- in case if common page is rendered, is null if called fromcreateForm()
-
processTemplate
protected javax.ws.rs.core.Response processTemplate(Theme theme, String templateName, Locale locale)
Process FreeMarker template and prepare Response. Some fields are used for rendering also.- Parameters:
theme- to be used (provided bygetTheme())templateName- name of the template to be renderedlocale- to be used- Returns:
- Response object to be returned to the browser, never null
-
createLoginUsernamePassword
public javax.ws.rs.core.Response createLoginUsernamePassword()
- Specified by:
createLoginUsernamePasswordin interfaceLoginFormsProvider
-
createLoginUsername
public javax.ws.rs.core.Response createLoginUsername()
- Specified by:
createLoginUsernamein interfaceLoginFormsProvider
-
createLoginPassword
public javax.ws.rs.core.Response createLoginPassword()
- Specified by:
createLoginPasswordin interfaceLoginFormsProvider
-
createPasswordReset
public javax.ws.rs.core.Response createPasswordReset()
- Specified by:
createPasswordResetin interfaceLoginFormsProvider
-
createLoginTotp
public javax.ws.rs.core.Response createLoginTotp()
- Specified by:
createLoginTotpin interfaceLoginFormsProvider
-
createLoginRecoveryAuthnCode
public javax.ws.rs.core.Response createLoginRecoveryAuthnCode()
- Specified by:
createLoginRecoveryAuthnCodein interfaceLoginFormsProvider
-
createLoginWebAuthn
public javax.ws.rs.core.Response createLoginWebAuthn()
- Specified by:
createLoginWebAuthnin interfaceLoginFormsProvider
-
createRegistration
public javax.ws.rs.core.Response createRegistration()
- Specified by:
createRegistrationin interfaceLoginFormsProvider
-
createInfoPage
public javax.ws.rs.core.Response createInfoPage()
- Specified by:
createInfoPagein interfaceLoginFormsProvider
-
createUpdateProfilePage
public javax.ws.rs.core.Response createUpdateProfilePage()
- Specified by:
createUpdateProfilePagein interfaceLoginFormsProvider
-
createIdpLinkConfirmLinkPage
public javax.ws.rs.core.Response createIdpLinkConfirmLinkPage()
- Specified by:
createIdpLinkConfirmLinkPagein interfaceLoginFormsProvider
-
createLoginExpiredPage
public javax.ws.rs.core.Response createLoginExpiredPage()
- Specified by:
createLoginExpiredPagein interfaceLoginFormsProvider
-
createIdpLinkEmailPage
public javax.ws.rs.core.Response createIdpLinkEmailPage()
- Specified by:
createIdpLinkEmailPagein interfaceLoginFormsProvider
-
createErrorPage
public javax.ws.rs.core.Response createErrorPage(javax.ws.rs.core.Response.Status status)
- Specified by:
createErrorPagein interfaceLoginFormsProvider
-
createWebAuthnErrorPage
public javax.ws.rs.core.Response createWebAuthnErrorPage()
- Specified by:
createWebAuthnErrorPagein interfaceLoginFormsProvider
-
createOAuthGrant
public javax.ws.rs.core.Response createOAuthGrant()
- Specified by:
createOAuthGrantin interfaceLoginFormsProvider
-
createSelectAuthenticator
public javax.ws.rs.core.Response createSelectAuthenticator()
- Specified by:
createSelectAuthenticatorin interfaceLoginFormsProvider
-
createOAuth2DeviceVerifyUserCodePage
public javax.ws.rs.core.Response createOAuth2DeviceVerifyUserCodePage()
- Specified by:
createOAuth2DeviceVerifyUserCodePagein interfaceLoginFormsProvider
-
createCode
public javax.ws.rs.core.Response createCode()
- Specified by:
createCodein interfaceLoginFormsProvider
-
createX509ConfirmPage
public javax.ws.rs.core.Response createX509ConfirmPage()
- Specified by:
createX509ConfirmPagein interfaceLoginFormsProvider
-
createSamlPostForm
public javax.ws.rs.core.Response createSamlPostForm()
- Specified by:
createSamlPostFormin interfaceLoginFormsProvider
-
createFrontChannelLogoutPage
public javax.ws.rs.core.Response createFrontChannelLogoutPage()
- Specified by:
createFrontChannelLogoutPagein interfaceLoginFormsProvider
-
createLogoutConfirmPage
public javax.ws.rs.core.Response createLogoutConfirmPage()
- Specified by:
createLogoutConfirmPagein interfaceLoginFormsProvider
-
setMessage
protected void setMessage(MessageType type, String message, Object... parameters)
-
getFirstMessageUnformatted
protected String getFirstMessageUnformatted()
-
formatMessage
protected String formatMessage(FormMessage message, Properties messagesBundle, Locale locale)
-
setError
public FreeMarkerLoginFormsProvider setError(String message, Object... parameters)
Description copied from interface:LoginFormsProviderSet one global error message.- Specified by:
setErrorin interfaceLoginFormsProvider- Parameters:
message- key of messageparameters- to be formatted into message
-
setErrors
public LoginFormsProvider setErrors(List<FormMessage> messages)
Description copied from interface:LoginFormsProviderSet multiple error messages.- Specified by:
setErrorsin interfaceLoginFormsProvider- Parameters:
messages- to be set
-
addError
public LoginFormsProvider addError(FormMessage errorMessage)
- Specified by:
addErrorin interfaceLoginFormsProvider
-
addSuccess
public LoginFormsProvider addSuccess(FormMessage errorMessage)
Description copied from interface:LoginFormsProviderAdd a success message to the form- Specified by:
addSuccessin interfaceLoginFormsProvider- Returns:
-
setSuccess
public FreeMarkerLoginFormsProvider setSuccess(String message, Object... parameters)
- Specified by:
setSuccessin interfaceLoginFormsProvider
-
setInfo
public FreeMarkerLoginFormsProvider setInfo(String message, Object... parameters)
- Specified by:
setInfoin interfaceLoginFormsProvider
-
setAuthenticationSession
public LoginFormsProvider setAuthenticationSession(AuthenticationSessionModel authenticationSession)
- Specified by:
setAuthenticationSessionin interfaceLoginFormsProvider
-
setUser
public FreeMarkerLoginFormsProvider setUser(UserModel user)
- Specified by:
setUserin interfaceLoginFormsProvider
-
setFormData
public FreeMarkerLoginFormsProvider setFormData(javax.ws.rs.core.MultivaluedMap<String,String> formData)
- Specified by:
setFormDatain interfaceLoginFormsProvider
-
setClientSessionCode
public LoginFormsProvider setClientSessionCode(String accessCode)
- Specified by:
setClientSessionCodein interfaceLoginFormsProvider
-
setAccessRequest
public LoginFormsProvider setAccessRequest(List<AuthorizationDetails> clientScopesRequested)
- Specified by:
setAccessRequestin interfaceLoginFormsProvider
-
setAttribute
public LoginFormsProvider setAttribute(String name, Object value)
- Specified by:
setAttributein interfaceLoginFormsProvider
-
setStatus
public LoginFormsProvider setStatus(javax.ws.rs.core.Response.Status status)
- Specified by:
setStatusin interfaceLoginFormsProvider
-
setActionUri
public LoginFormsProvider setActionUri(URI actionUri)
- Specified by:
setActionUriin interfaceLoginFormsProvider
-
setExecution
public LoginFormsProvider setExecution(String execution)
- Specified by:
setExecutionin interfaceLoginFormsProvider
-
setResponseHeader
public LoginFormsProvider setResponseHeader(String headerName, String headerValue)
- Specified by:
setResponseHeaderin interfaceLoginFormsProvider
-
setAuthContext
public LoginFormsProvider setAuthContext(AuthenticationFlowContext context)
- Specified by:
setAuthContextin interfaceLoginFormsProvider
-
-