Search in sources :

Example 1 with UrlBean

use of org.keycloak.forms.login.freemarker.model.UrlBean in project keycloak by keycloak.

the class FreeMarkerEmailTemplateProvider method addLinkInfoIntoAttributes.

/**
 * Add link info into template attributes.
 *
 * @param link to add
 * @param expirationInMinutes to add
 * @param attributes to add link info into
 */
protected void addLinkInfoIntoAttributes(String link, long expirationInMinutes, Map<String, Object> attributes) throws EmailException {
    attributes.put("link", link);
    attributes.put("linkExpiration", expirationInMinutes);
    KeycloakUriInfo uriInfo = session.getContext().getUri();
    URI baseUri = uriInfo.getBaseUri();
    try {
        Locale locale = session.getContext().resolveLocale(user);
        attributes.put("linkExpirationFormatter", new LinkExpirationFormatterMethod(getTheme().getMessages(locale), locale));
        attributes.put("url", new UrlBean(realm, getTheme(), baseUri, null));
    } catch (IOException e) {
        throw new EmailException("Failed to template email", e);
    }
}
Also used : Locale(java.util.Locale) KeycloakUriInfo(org.keycloak.models.KeycloakUriInfo) UrlBean(org.keycloak.forms.login.freemarker.model.UrlBean) EmailException(org.keycloak.email.EmailException) LinkExpirationFormatterMethod(org.keycloak.theme.beans.LinkExpirationFormatterMethod) IOException(java.io.IOException) URI(java.net.URI)

Example 2 with UrlBean

use of org.keycloak.forms.login.freemarker.model.UrlBean in project keycloak by keycloak.

the class FreeMarkerLoginFormsProvider method createCommonAttributes.

/**
 * Create common attributes used in all templates.
 *
 * @param theme actual Theme used (provided by <code>getTheme()</code>)
 * @param locale actual locale
 * @param messagesBundle actual message bundle (provided by <code>handleThemeResources()</code>)
 * @param baseUriBuilder actual base uri builder (provided by <code>prepareBaseUriBuilder()</code>)
 * @param page in case if common page is rendered, is null if called from <code>createForm()</code>
 */
protected void createCommonAttributes(Theme theme, Locale locale, Properties messagesBundle, UriBuilder baseUriBuilder, LoginFormsPages page) {
    URI baseUri = baseUriBuilder.build();
    if (accessCode != null) {
        baseUriBuilder.queryParam(LoginActionsService.SESSION_CODE, accessCode);
    }
    URI baseUriWithCodeAndClientId = baseUriBuilder.build();
    if (client != null) {
        attributes.put("client", new ClientBean(session, client));
    }
    if (realm != null) {
        attributes.put("realm", new RealmBean(realm));
        List<IdentityProviderModel> identityProviders = LoginFormsUtil.filterIdentityProviders(realm.getIdentityProvidersStream(), session, context);
        attributes.put("social", new IdentityProviderBean(realm, session, identityProviders, baseUriWithCodeAndClientId));
        attributes.put("url", new UrlBean(realm, theme, baseUri, this.actionUri));
        attributes.put("requiredActionUrl", new RequiredActionUrlFormatterMethod(realm, baseUri));
        attributes.put("auth", new AuthenticationContextBean(context, page));
        attributes.put(Constants.EXECUTION, execution);
        if (realm.isInternationalizationEnabled()) {
            UriBuilder b;
            if (page != null) {
                switch(page) {
                    case LOGIN:
                    case LOGIN_USERNAME:
                    case X509_CONFIRM:
                        b = UriBuilder.fromUri(Urls.realmLoginPage(baseUri, realm.getName()));
                        break;
                    case REGISTER:
                        b = UriBuilder.fromUri(Urls.realmRegisterPage(baseUri, realm.getName()));
                        break;
                    default:
                        b = UriBuilder.fromUri(baseUri).path(uriInfo.getPath());
                        break;
                }
            } else {
                b = UriBuilder.fromUri(baseUri).path(uriInfo.getPath());
            }
            if (execution != null) {
                b.queryParam(Constants.EXECUTION, execution);
            }
            if (authenticationSession != null && authenticationSession.getAuthNote(Constants.KEY) != null) {
                b.queryParam(Constants.KEY, authenticationSession.getAuthNote(Constants.KEY));
            }
            attributes.put("locale", new LocaleBean(realm, locale, b, messagesBundle));
        }
    }
    if (realm != null && user != null && session != null) {
        attributes.put("authenticatorConfigured", new AuthenticatorConfiguredMethod(realm, user, session));
    }
    if (authenticationSession != null && authenticationSession.getClientNote(Constants.KC_ACTION_EXECUTING) != null) {
        attributes.put("isAppInitiatedAction", true);
    }
}
Also used : RequiredActionUrlFormatterMethod(org.keycloak.forms.login.freemarker.model.RequiredActionUrlFormatterMethod) IdentityProviderBean(org.keycloak.forms.login.freemarker.model.IdentityProviderBean) ClientBean(org.keycloak.forms.login.freemarker.model.ClientBean) UrlBean(org.keycloak.forms.login.freemarker.model.UrlBean) AuthenticationContextBean(org.keycloak.forms.login.freemarker.model.AuthenticationContextBean) RealmBean(org.keycloak.forms.login.freemarker.model.RealmBean) IdentityProviderModel(org.keycloak.models.IdentityProviderModel) UriBuilder(javax.ws.rs.core.UriBuilder) URI(java.net.URI) LocaleBean(org.keycloak.theme.beans.LocaleBean)

Example 3 with UrlBean

use of org.keycloak.forms.login.freemarker.model.UrlBean in project keycloak by keycloak.

the class KeycloakErrorHandler method initAttributes.

private Map<String, Object> initAttributes(KeycloakSession session, RealmModel realm, Theme theme, Locale locale, int statusCode) throws IOException {
    Map<String, Object> attributes = new HashMap<>();
    Properties messagesBundle = theme.getMessages(locale);
    attributes.put("statusCode", statusCode);
    attributes.put("realm", realm);
    attributes.put("url", new UrlBean(realm, theme, session.getContext().getUri().getBaseUri(), null));
    attributes.put("locale", new LocaleBean(realm, locale, session.getContext().getUri().getBaseUriBuilder(), messagesBundle));
    String errorKey = statusCode == 404 ? Messages.PAGE_NOT_FOUND : Messages.INTERNAL_SERVER_ERROR;
    String errorMessage = messagesBundle.getProperty(errorKey);
    attributes.put("message", new MessageBean(errorMessage, MessageType.ERROR));
    try {
        attributes.put("msg", new MessageFormatterMethod(locale, theme.getMessages(locale)));
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        attributes.put("properties", theme.getProperties());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return attributes;
}
Also used : MessageBean(org.keycloak.theme.beans.MessageBean) UrlBean(org.keycloak.forms.login.freemarker.model.UrlBean) HashMap(java.util.HashMap) IOException(java.io.IOException) Properties(java.util.Properties) MessageFormatterMethod(org.keycloak.theme.beans.MessageFormatterMethod) LocaleBean(org.keycloak.theme.beans.LocaleBean)

Aggregations

UrlBean (org.keycloak.forms.login.freemarker.model.UrlBean)3 IOException (java.io.IOException)2 URI (java.net.URI)2 LocaleBean (org.keycloak.theme.beans.LocaleBean)2 HashMap (java.util.HashMap)1 Locale (java.util.Locale)1 Properties (java.util.Properties)1 UriBuilder (javax.ws.rs.core.UriBuilder)1 EmailException (org.keycloak.email.EmailException)1 AuthenticationContextBean (org.keycloak.forms.login.freemarker.model.AuthenticationContextBean)1 ClientBean (org.keycloak.forms.login.freemarker.model.ClientBean)1 IdentityProviderBean (org.keycloak.forms.login.freemarker.model.IdentityProviderBean)1 RealmBean (org.keycloak.forms.login.freemarker.model.RealmBean)1 RequiredActionUrlFormatterMethod (org.keycloak.forms.login.freemarker.model.RequiredActionUrlFormatterMethod)1 IdentityProviderModel (org.keycloak.models.IdentityProviderModel)1 KeycloakUriInfo (org.keycloak.models.KeycloakUriInfo)1 LinkExpirationFormatterMethod (org.keycloak.theme.beans.LinkExpirationFormatterMethod)1 MessageBean (org.keycloak.theme.beans.MessageBean)1 MessageFormatterMethod (org.keycloak.theme.beans.MessageFormatterMethod)1