Class FreeMarkerLoginFormsProvider

  • All Implemented Interfaces:
    org.keycloak.forms.login.LoginFormsProvider, org.keycloak.provider.Provider

    public class FreeMarkerLoginFormsProvider
    extends Object
    implements org.keycloak.forms.login.LoginFormsProvider
    Author:
    Stian Thorgersen
    • Field Detail

      • accessCode

        protected String accessCode
      • status

        protected javax.ws.rs.core.Response.Status status
      • clientScopesRequested

        protected List<org.keycloak.rar.AuthorizationDetails> clientScopesRequested
      • actionUri

        protected URI actionUri
      • execution

        protected String execution
      • context

        protected org.keycloak.authentication.AuthenticationFlowContext context
      • messages

        protected List<org.keycloak.models.utils.FormMessage> messages
      • formData

        protected javax.ws.rs.core.MultivaluedMap<String,​String> formData
      • session

        protected org.keycloak.models.KeycloakSession session
      • authenticationSession

        protected org.keycloak.sessions.AuthenticationSessionModel authenticationSession
        authenticationSession can be null for some renderings, mainly error pages
      • realm

        protected org.keycloak.models.RealmModel realm
      • client

        protected org.keycloak.models.ClientModel client
      • uriInfo

        protected javax.ws.rs.core.UriInfo uriInfo
      • user

        protected org.keycloak.models.UserModel user
    • Constructor Detail

      • FreeMarkerLoginFormsProvider

        public FreeMarkerLoginFormsProvider​(org.keycloak.models.KeycloakSession session)
    • Method Detail

      • addScript

        public void addScript​(String scriptUrl)
        Specified by:
        addScript in interface org.keycloak.forms.login.LoginFormsProvider
      • createResponse

        public javax.ws.rs.core.Response createResponse​(org.keycloak.models.UserModel.RequiredAction action)
        Specified by:
        createResponse in interface org.keycloak.forms.login.LoginFormsProvider
      • createResponse

        protected javax.ws.rs.core.Response createResponse​(org.keycloak.forms.login.LoginFormsPages page)
      • createForm

        public javax.ws.rs.core.Response createForm​(String form)
        Specified by:
        createForm in interface org.keycloak.forms.login.LoginFormsProvider
      • 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 org.keycloak.theme.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​(org.keycloak.theme.Theme theme,
                                                  Locale locale)
        Load message bundle and place it into msg template attribute. Also load Theme properties and place them into properties template attribute.
        Parameters:
        theme - actual Theme to load bundle from
        locale - 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 loading
        messagesBundle - to be used for message text loading
        See Also:
        messageType, messages
      • getMessage

        public String getMessage​(String message)
        Specified by:
        getMessage in interface org.keycloak.forms.login.LoginFormsProvider
      • createCommonAttributes

        protected void createCommonAttributes​(org.keycloak.theme.Theme theme,
                                              Locale locale,
                                              Properties messagesBundle,
                                              javax.ws.rs.core.UriBuilder baseUriBuilder,
                                              org.keycloak.forms.login.LoginFormsPages page)
        Create common attributes used in all templates.
        Parameters:
        theme - actual Theme used (provided by getTheme())
        locale - actual locale
        messagesBundle - actual message bundle (provided by handleThemeResources())
        baseUriBuilder - actual base uri builder (provided by prepareBaseUriBuilder())
        page - in case if common page is rendered, is null if called from createForm()
      • processTemplate

        protected javax.ws.rs.core.Response processTemplate​(org.keycloak.theme.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 by getTheme())
        templateName - name of the template to be rendered
        locale - to be used
        Returns:
        Response object to be returned to the browser, never null
      • createLoginUsernamePassword

        public javax.ws.rs.core.Response createLoginUsernamePassword()
        Specified by:
        createLoginUsernamePassword in interface org.keycloak.forms.login.LoginFormsProvider
      • createLoginUsername

        public javax.ws.rs.core.Response createLoginUsername()
        Specified by:
        createLoginUsername in interface org.keycloak.forms.login.LoginFormsProvider
      • createLoginPassword

        public javax.ws.rs.core.Response createLoginPassword()
        Specified by:
        createLoginPassword in interface org.keycloak.forms.login.LoginFormsProvider
      • createPasswordReset

        public javax.ws.rs.core.Response createPasswordReset()
        Specified by:
        createPasswordReset in interface org.keycloak.forms.login.LoginFormsProvider
      • createLoginTotp

        public javax.ws.rs.core.Response createLoginTotp()
        Specified by:
        createLoginTotp in interface org.keycloak.forms.login.LoginFormsProvider
      • createLoginRecoveryAuthnCode

        public javax.ws.rs.core.Response createLoginRecoveryAuthnCode()
        Specified by:
        createLoginRecoveryAuthnCode in interface org.keycloak.forms.login.LoginFormsProvider
      • createLoginWebAuthn

        public javax.ws.rs.core.Response createLoginWebAuthn()
        Specified by:
        createLoginWebAuthn in interface org.keycloak.forms.login.LoginFormsProvider
      • createRegistration

        public javax.ws.rs.core.Response createRegistration()
        Specified by:
        createRegistration in interface org.keycloak.forms.login.LoginFormsProvider
      • createInfoPage

        public javax.ws.rs.core.Response createInfoPage()
        Specified by:
        createInfoPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createUpdateProfilePage

        public javax.ws.rs.core.Response createUpdateProfilePage()
        Specified by:
        createUpdateProfilePage in interface org.keycloak.forms.login.LoginFormsProvider
      • createIdpLinkConfirmLinkPage

        public javax.ws.rs.core.Response createIdpLinkConfirmLinkPage()
        Specified by:
        createIdpLinkConfirmLinkPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createLoginExpiredPage

        public javax.ws.rs.core.Response createLoginExpiredPage()
        Specified by:
        createLoginExpiredPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createIdpLinkEmailPage

        public javax.ws.rs.core.Response createIdpLinkEmailPage()
        Specified by:
        createIdpLinkEmailPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createErrorPage

        public javax.ws.rs.core.Response createErrorPage​(javax.ws.rs.core.Response.Status status)
        Specified by:
        createErrorPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createWebAuthnErrorPage

        public javax.ws.rs.core.Response createWebAuthnErrorPage()
        Specified by:
        createWebAuthnErrorPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createOAuthGrant

        public javax.ws.rs.core.Response createOAuthGrant()
        Specified by:
        createOAuthGrant in interface org.keycloak.forms.login.LoginFormsProvider
      • createSelectAuthenticator

        public javax.ws.rs.core.Response createSelectAuthenticator()
        Specified by:
        createSelectAuthenticator in interface org.keycloak.forms.login.LoginFormsProvider
      • createOAuth2DeviceVerifyUserCodePage

        public javax.ws.rs.core.Response createOAuth2DeviceVerifyUserCodePage()
        Specified by:
        createOAuth2DeviceVerifyUserCodePage in interface org.keycloak.forms.login.LoginFormsProvider
      • createCode

        public javax.ws.rs.core.Response createCode()
        Specified by:
        createCode in interface org.keycloak.forms.login.LoginFormsProvider
      • createX509ConfirmPage

        public javax.ws.rs.core.Response createX509ConfirmPage()
        Specified by:
        createX509ConfirmPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createSamlPostForm

        public javax.ws.rs.core.Response createSamlPostForm()
        Specified by:
        createSamlPostForm in interface org.keycloak.forms.login.LoginFormsProvider
      • createFrontChannelLogoutPage

        public javax.ws.rs.core.Response createFrontChannelLogoutPage()
        Specified by:
        createFrontChannelLogoutPage in interface org.keycloak.forms.login.LoginFormsProvider
      • createLogoutConfirmPage

        public javax.ws.rs.core.Response createLogoutConfirmPage()
        Specified by:
        createLogoutConfirmPage in interface org.keycloak.forms.login.LoginFormsProvider
      • getFirstMessageUnformatted

        protected String getFirstMessageUnformatted()
      • formatMessage

        protected String formatMessage​(org.keycloak.models.utils.FormMessage message,
                                       Properties messagesBundle,
                                       Locale locale)
      • setErrors

        public org.keycloak.forms.login.LoginFormsProvider setErrors​(List<org.keycloak.models.utils.FormMessage> messages)
        Specified by:
        setErrors in interface org.keycloak.forms.login.LoginFormsProvider
      • addError

        public org.keycloak.forms.login.LoginFormsProvider addError​(org.keycloak.models.utils.FormMessage errorMessage)
        Specified by:
        addError in interface org.keycloak.forms.login.LoginFormsProvider
      • addSuccess

        public org.keycloak.forms.login.LoginFormsProvider addSuccess​(org.keycloak.models.utils.FormMessage errorMessage)
        Specified by:
        addSuccess in interface org.keycloak.forms.login.LoginFormsProvider
      • setAuthenticationSession

        public org.keycloak.forms.login.LoginFormsProvider setAuthenticationSession​(org.keycloak.sessions.AuthenticationSessionModel authenticationSession)
        Specified by:
        setAuthenticationSession in interface org.keycloak.forms.login.LoginFormsProvider
      • setUser

        public FreeMarkerLoginFormsProvider setUser​(org.keycloak.models.UserModel user)
        Specified by:
        setUser in interface org.keycloak.forms.login.LoginFormsProvider
      • setFormData

        public FreeMarkerLoginFormsProvider setFormData​(javax.ws.rs.core.MultivaluedMap<String,​String> formData)
        Specified by:
        setFormData in interface org.keycloak.forms.login.LoginFormsProvider
      • setClientSessionCode

        public org.keycloak.forms.login.LoginFormsProvider setClientSessionCode​(String accessCode)
        Specified by:
        setClientSessionCode in interface org.keycloak.forms.login.LoginFormsProvider
      • setAccessRequest

        public org.keycloak.forms.login.LoginFormsProvider setAccessRequest​(List<org.keycloak.rar.AuthorizationDetails> clientScopesRequested)
        Specified by:
        setAccessRequest in interface org.keycloak.forms.login.LoginFormsProvider
      • setAttribute

        public org.keycloak.forms.login.LoginFormsProvider setAttribute​(String name,
                                                                        Object value)
        Specified by:
        setAttribute in interface org.keycloak.forms.login.LoginFormsProvider
      • setStatus

        public org.keycloak.forms.login.LoginFormsProvider setStatus​(javax.ws.rs.core.Response.Status status)
        Specified by:
        setStatus in interface org.keycloak.forms.login.LoginFormsProvider
      • setActionUri

        public org.keycloak.forms.login.LoginFormsProvider setActionUri​(URI actionUri)
        Specified by:
        setActionUri in interface org.keycloak.forms.login.LoginFormsProvider
      • setExecution

        public org.keycloak.forms.login.LoginFormsProvider setExecution​(String execution)
        Specified by:
        setExecution in interface org.keycloak.forms.login.LoginFormsProvider
      • setResponseHeader

        public org.keycloak.forms.login.LoginFormsProvider setResponseHeader​(String headerName,
                                                                             String headerValue)
        Specified by:
        setResponseHeader in interface org.keycloak.forms.login.LoginFormsProvider
      • setAuthContext

        public org.keycloak.forms.login.LoginFormsProvider setAuthContext​(org.keycloak.authentication.AuthenticationFlowContext context)
        Specified by:
        setAuthContext in interface org.keycloak.forms.login.LoginFormsProvider
      • close

        public void close()
        Specified by:
        close in interface org.keycloak.provider.Provider