keycloak-service
公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider クラス
org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider の継承関係図
Inheritance graph
org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider 連携図
Collaboration graph

公開メンバ関数

 FreeMarkerLoginFormsProvider (KeycloakSession session, FreeMarkerUtil freeMarker)
 
void addScript (String scriptUrl)
 
Response createResponse (UserModel.RequiredAction action)
 
Response createForm (String form)
 
String getMessage (String message)
 
String getMessage (String message, String... parameters)
 
Response createLogin ()
 
Response createPasswordReset ()
 
Response createLoginTotp ()
 
Response createRegistration ()
 
Response createInfoPage ()
 
Response createUpdateProfilePage ()
 
Response createIdpLinkConfirmLinkPage ()
 
Response createLoginExpiredPage ()
 
Response createIdpLinkEmailPage ()
 
Response createErrorPage (Response.Status status)
 
Response createOAuthGrant ()
 
Response createCode ()
 
Response createX509ConfirmPage ()
 
FreeMarkerLoginFormsProvider setError (String message, Object... parameters)
 
LoginFormsProvider setErrors (List< FormMessage > messages)
 
LoginFormsProvider addError (FormMessage errorMessage)
 
LoginFormsProvider addSuccess (FormMessage errorMessage)
 
FreeMarkerLoginFormsProvider setSuccess (String message, Object... parameters)
 
FreeMarkerLoginFormsProvider setInfo (String message, Object... parameters)
 
LoginFormsProvider setAuthenticationSession (AuthenticationSessionModel authenticationSession)
 
FreeMarkerLoginFormsProvider setUser (UserModel user)
 
FreeMarkerLoginFormsProvider setFormData (MultivaluedMap< String, String > formData)
 
LoginFormsProvider setClientSessionCode (String accessCode)
 
LoginFormsProvider setAccessRequest (List< ClientScopeModel > clientScopesRequested)
 
LoginFormsProvider setAttribute (String name, Object value)
 
LoginFormsProvider setStatus (Response.Status status)
 
LoginFormsProvider setMediaType (javax.ws.rs.core.MediaType type)
 
LoginFormsProvider setActionUri (URI actionUri)
 
LoginFormsProvider setExecution (String execution)
 
LoginFormsProvider setResponseHeader (String headerName, String headerValue)
 
void close ()
 

限定公開メンバ関数

Response createResponse (LoginFormsPages page)
 
UriBuilder prepareBaseUriBuilder (boolean resetRequestUriParams)
 
Theme getTheme () throws IOException
 
Properties handleThemeResources (Theme theme, Locale locale)
 
void handleMessages (Locale locale, Properties messagesBundle)
 
void createCommonAttributes (Theme theme, Locale locale, Properties messagesBundle, UriBuilder baseUriBuilder, LoginFormsPages page)
 
Response processTemplate (Theme theme, String templateName, Locale locale)
 
void setMessage (MessageType type, String message, Object... parameters)
 
String getFirstMessageUnformatted ()
 
String formatMessage (FormMessage message, Properties messagesBundle, Locale locale)
 

限定公開変数類

String accessCode
 
Response.Status status
 
javax.ws.rs.core.MediaType contentType
 
List< ClientScopeModel > clientScopesRequested
 
Map< String, String > httpResponseHeaders = new HashMap<>()
 
URI actionUri
 
String execution
 
List< FormMessage > messages = null
 
MessageType messageType = MessageType.ERROR
 
MultivaluedMap< String, String > formData
 
KeycloakSession session
 
AuthenticationSessionModel authenticationSession
 
RealmModel realm
 
ClientModel client
 
UriInfo uriInfo
 
FreeMarkerUtil freeMarker
 
UserModel user
 
final Map< String, Object > attributes = new HashMap<>()
 

静的非公開変数類

static final Logger logger = Logger.getLogger(FreeMarkerLoginFormsProvider.class)
 

詳解

著者
Stian Thorgersen

構築子と解体子

◆ FreeMarkerLoginFormsProvider()

org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.FreeMarkerLoginFormsProvider ( KeycloakSession  session,
FreeMarkerUtil  freeMarker 
)
inline
102  {
103  this.session = session;
104  this.freeMarker = freeMarker;
105  this.attributes.put("scripts", new LinkedList<>());
106  this.realm = session.getContext().getRealm();
107  this.client = session.getContext().getClient();
108  this.uriInfo = session.getContext().getUri();
109  }
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89
UriInfo uriInfo
Definition: FreeMarkerLoginFormsProvider.java:94
RealmModel realm
Definition: FreeMarkerLoginFormsProvider.java:92
FreeMarkerUtil freeMarker
Definition: FreeMarkerLoginFormsProvider.java:96
ClientModel client
Definition: FreeMarkerLoginFormsProvider.java:93

関数詳解

◆ addError()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.addError ( FormMessage  errorMessage)
inline
563  {
564  if (this.messageType != MessageType.ERROR) {
565  this.messageType = null;
566  this.messages = null;
567  }
568  if (messages == null) {
569  this.messageType = MessageType.ERROR;
570  this.messages = new LinkedList<>();
571  }
572  this.messages.add(errorMessage);
573  return this;
574 
575  }
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85
ERROR
Definition: MessageType.java:26

◆ addScript()

void org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.addScript ( String  scriptUrl)
inline
113  {
114  List<String> scripts = (List<String>) this.attributes.get("scripts");
115  scripts.add(scriptUrl);
116  }
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100

◆ addSuccess()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.addSuccess ( FormMessage  errorMessage)
inline
578  {
579  if (this.messageType != MessageType.SUCCESS) {
580  this.messageType = null;
581  this.messages = null;
582  }
583  if (messages == null) {
584  this.messageType = MessageType.SUCCESS;
585  this.messages = new LinkedList<>();
586  }
587  this.messages.add(errorMessage);
588  return this;
589 
590  }
SUCCESS
Definition: MessageType.java:26
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85

◆ close()

void org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.close ( )
inline
671  {
672  }

◆ createCode()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createCode ( )
inline
515  {
516  return createResponse(LoginFormsPages.CODE);
517  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createCommonAttributes()

void org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createCommonAttributes ( Theme  theme,
Locale  locale,
Properties  messagesBundle,
UriBuilder  baseUriBuilder,
LoginFormsPages  page 
)
inlineprotected

Create common attributes used in all templates.

引数
themeactual Theme used (provided by getTheme())
localeactual locale
messagesBundleactual message bundle (provided by handleThemeResources())
baseUriBuilderactual base uri builder (provided by prepareBaseUriBuilder())
pagein case if common page is rendered, is null if called from createForm()
365  {
366  URI baseUri = baseUriBuilder.build();
367  if (accessCode != null) {
368  baseUriBuilder.queryParam(LoginActionsService.SESSION_CODE, accessCode);
369  }
370  URI baseUriWithCodeAndClientId = baseUriBuilder.build();
371 
372  if (client != null) {
373  attributes.put("client", new ClientBean(client, baseUri));
374  }
375 
376  if (realm != null) {
377  attributes.put("realm", new RealmBean(realm));
378 
379  List<IdentityProviderModel> identityProviders = realm.getIdentityProviders();
380  identityProviders = LoginFormsUtil.filterIdentityProviders(identityProviders, session, realm, attributes, formData);
381  attributes.put("social", new IdentityProviderBean(realm, session, identityProviders, baseUriWithCodeAndClientId));
382 
383  attributes.put("url", new UrlBean(realm, theme, baseUri, this.actionUri));
384  attributes.put("requiredActionUrl", new RequiredActionUrlFormatterMethod(realm, baseUri));
385 
386  if (realm.isInternationalizationEnabled()) {
387  UriBuilder b;
388  if (page != null) {
389  switch (page) {
390  case LOGIN:
391  b = UriBuilder.fromUri(Urls.realmLoginPage(baseUri, realm.getName()));
392  break;
393  case X509_CONFIRM:
394  b = UriBuilder.fromUri(Urls.realmLoginPage(baseUri, realm.getName()));
395  break;
396  case REGISTER:
397  b = UriBuilder.fromUri(Urls.realmRegisterPage(baseUri, realm.getName()));
398  break;
399  default:
400  b = UriBuilder.fromUri(baseUri).path(uriInfo.getPath());
401  break;
402  }
403  } else {
404  b = UriBuilder.fromUri(baseUri)
405  .path(uriInfo.getPath());
406  }
407 
408  if (execution != null) {
409  b.queryParam(Constants.EXECUTION, execution);
410  }
411 
412  if (authenticationSession != null && authenticationSession.getAuthNote(Constants.KEY) != null) {
413  b.queryParam(Constants.KEY, authenticationSession.getAuthNote(Constants.KEY));
414  }
415 
416  attributes.put("locale", new LocaleBean(realm, locale, b, messagesBundle));
417  }
418  }
419  if (realm != null && user != null && session != null) {
420  attributes.put("authenticatorConfigured", new AuthenticatorConfiguredMethod(realm, user, session));
421  }
422  }
AuthenticationSessionModel authenticationSession
Definition: FreeMarkerLoginFormsProvider.java:91
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
URI actionUri
Definition: FreeMarkerLoginFormsProvider.java:81
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89
UriInfo uriInfo
Definition: FreeMarkerLoginFormsProvider.java:94
RealmModel realm
Definition: FreeMarkerLoginFormsProvider.java:92
String accessCode
Definition: FreeMarkerLoginFormsProvider.java:76
MultivaluedMap< String, String > formData
Definition: FreeMarkerLoginFormsProvider.java:87
String execution
Definition: FreeMarkerLoginFormsProvider.java:82
ClientModel client
Definition: FreeMarkerLoginFormsProvider.java:93

◆ createErrorPage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createErrorPage ( Response.Status  status)
inline
504  {
505  this.status = status;
506  return createResponse(LoginFormsPages.ERROR);
507  }
Response.Status status
Definition: FreeMarkerLoginFormsProvider.java:77
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createForm()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createForm ( String  form)
inline
218  {
219  Theme theme;
220  try {
221  theme = getTheme();
222  } catch (IOException e) {
223  logger.error("Failed to create theme", e);
224  return Response.serverError().build();
225  }
226 
227  Locale locale = session.getContext().resolveLocale(user);
228  Properties messagesBundle = handleThemeResources(theme, locale);
229 
230  handleMessages(locale, messagesBundle);
231 
232  UriBuilder uriBuilder = prepareBaseUriBuilder(false);
233  createCommonAttributes(theme, locale, messagesBundle, uriBuilder, null);
234 
235  return processTemplate(theme, form, locale);
236  }
Theme getTheme()
Definition: FreeMarkerLoginFormsProvider.java:266
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98
void createCommonAttributes(Theme theme, Locale locale, Properties messagesBundle, UriBuilder baseUriBuilder, LoginFormsPages page)
Definition: FreeMarkerLoginFormsProvider.java:365
Response processTemplate(Theme theme, String templateName, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:432
static final Logger logger
Definition: FreeMarkerLoginFormsProvider.java:74
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89
void handleMessages(Locale locale, Properties messagesBundle)
Definition: FreeMarkerLoginFormsProvider.java:304
Properties handleThemeResources(Theme theme, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:277
UriBuilder prepareBaseUriBuilder(boolean resetRequestUriParams)
Definition: FreeMarkerLoginFormsProvider.java:244

◆ createIdpLinkConfirmLinkPage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createIdpLinkConfirmLinkPage ( )
inline
484  {
485  return createResponse(LoginFormsPages.LOGIN_IDP_LINK_CONFIRM);
486  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createIdpLinkEmailPage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createIdpLinkEmailPage ( )
inline
494  {
495  BrokeredIdentityContext brokerContext = (BrokeredIdentityContext) this.attributes.get(IDENTITY_PROVIDER_BROKER_CONTEXT);
496  String idpAlias = brokerContext.getIdpConfig().getAlias();
497  idpAlias = ObjectUtil.capitalize(idpAlias);
498  setMessage(MessageType.WARNING, Messages.LINK_IDP, idpAlias);
499 
500  return createResponse(LoginFormsPages.LOGIN_IDP_LINK_EMAIL);
501  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerLoginFormsProvider.java:524
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createInfoPage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createInfoPage ( )
inline
469  {
470  return createResponse(LoginFormsPages.INFO);
471  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createLogin()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createLogin ( )
inline
449  {
450  return createResponse(LoginFormsPages.LOGIN);
451  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createLoginExpiredPage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createLoginExpiredPage ( )
inline
489  {
490  return createResponse(LoginFormsPages.LOGIN_PAGE_EXPIRED);
491  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createLoginTotp()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createLoginTotp ( )
inline
459  {
460  return createResponse(LoginFormsPages.LOGIN_TOTP);
461  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createOAuthGrant()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createOAuthGrant ( )
inline
510  {
511  return createResponse(LoginFormsPages.OAUTH_GRANT);
512  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createPasswordReset()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createPasswordReset ( )
inline
454  {
455  return createResponse(LoginFormsPages.LOGIN_RESET_PASSWORD);
456  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createRegistration()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createRegistration ( )
inline
464  {
465  return createResponse(LoginFormsPages.REGISTER);
466  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createResponse() [1/2]

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createResponse ( UserModel.RequiredAction  action)
inline
119  {
120 
121  String actionMessage;
122  LoginFormsPages page;
123 
124  switch (action) {
125  case CONFIGURE_TOTP:
126  actionMessage = Messages.CONFIGURE_TOTP;
127  page = LoginFormsPages.LOGIN_CONFIG_TOTP;
128  break;
129  case UPDATE_PROFILE:
130  UpdateProfileContext userBasedContext = new UserUpdateProfileContext(realm, user);
131  this.attributes.put(UPDATE_PROFILE_CONTEXT_ATTR, userBasedContext);
132 
133  actionMessage = Messages.UPDATE_PROFILE;
134  page = LoginFormsPages.LOGIN_UPDATE_PROFILE;
135  break;
136  case UPDATE_PASSWORD:
137  boolean isRequestedByAdmin = user.getRequiredActions().stream().filter(Objects::nonNull).anyMatch(UPDATE_PASSWORD.toString()::contains);
138  actionMessage = isRequestedByAdmin ? Messages.UPDATE_PASSWORD : Messages.RESET_PASSWORD;
139  page = LoginFormsPages.LOGIN_UPDATE_PASSWORD;
140  break;
141  case VERIFY_EMAIL:
142  actionMessage = Messages.VERIFY_EMAIL;
143  page = LoginFormsPages.LOGIN_VERIFY_EMAIL;
144  break;
145  default:
146  return Response.serverError().build();
147  }
148 
149  if (messages == null) {
150  setMessage(MessageType.WARNING, actionMessage);
151  }
152 
153  return createResponse(page);
154  }
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerLoginFormsProvider.java:524
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
RealmModel realm
Definition: FreeMarkerLoginFormsProvider.java:92
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ createResponse() [2/2]

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createResponse ( LoginFormsPages  page)
inlineprotected
157  {
158  Theme theme;
159  try {
160  theme = getTheme();
161  } catch (IOException e) {
162  logger.error("Failed to create theme", e);
163  return Response.serverError().build();
164  }
165 
166  Locale locale = session.getContext().resolveLocale(user);
167  Properties messagesBundle = handleThemeResources(theme, locale);
168 
169  handleMessages(locale, messagesBundle);
170 
171  // 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
172  UriBuilder uriBuilder = prepareBaseUriBuilder(page == LoginFormsPages.OAUTH_GRANT);
173  createCommonAttributes(theme, locale, messagesBundle, uriBuilder, page);
174 
175  attributes.put("login", new LoginBean(formData));
176 
177  if (status != null) {
178  attributes.put("statusCode", status.getStatusCode());
179  }
180 
181  switch (page) {
182  case LOGIN_CONFIG_TOTP:
183  attributes.put("totp", new TotpBean(session, realm, user, uriInfo.getRequestUriBuilder()));
184  break;
185  case LOGIN_UPDATE_PROFILE:
186  UpdateProfileContext userCtx = (UpdateProfileContext) attributes.get(LoginFormsProvider.UPDATE_PROFILE_CONTEXT_ATTR);
187  attributes.put("user", new ProfileBean(userCtx, formData));
188  break;
189  case LOGIN_IDP_LINK_CONFIRM:
190  case LOGIN_IDP_LINK_EMAIL:
191  BrokeredIdentityContext brokerContext = (BrokeredIdentityContext) this.attributes.get(IDENTITY_PROVIDER_BROKER_CONTEXT);
192  String idpAlias = brokerContext.getIdpConfig().getAlias();
193  idpAlias = ObjectUtil.capitalize(idpAlias);
194 
195  attributes.put("brokerContext", brokerContext);
196  attributes.put("idpAlias", idpAlias);
197  break;
198  case REGISTER:
199  attributes.put("register", new RegisterBean(formData));
200  break;
201  case OAUTH_GRANT:
202  attributes.put("oauth",
203  new OAuthGrantBean(accessCode, client, clientScopesRequested));
204  attributes.put("advancedMsg", new AdvancedMessageFormatterMethod(locale, messagesBundle));
205  break;
206  case CODE:
207  attributes.put(OAuth2Constants.CODE, new CodeBean(accessCode, messageType == MessageType.ERROR ? getFirstMessageUnformatted() : null));
208  break;
209  case X509_CONFIRM:
210  attributes.put("x509", new X509ConfirmBean(formData));
211  break;
212  }
213 
214  return processTemplate(theme, Templates.getTemplate(page), locale);
215  }
Theme getTheme()
Definition: FreeMarkerLoginFormsProvider.java:266
String getFirstMessageUnformatted()
Definition: FreeMarkerLoginFormsProvider.java:530
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98
void createCommonAttributes(Theme theme, Locale locale, Properties messagesBundle, UriBuilder baseUriBuilder, LoginFormsPages page)
Definition: FreeMarkerLoginFormsProvider.java:365
Response.Status status
Definition: FreeMarkerLoginFormsProvider.java:77
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
Response processTemplate(Theme theme, String templateName, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:432
static final Logger logger
Definition: FreeMarkerLoginFormsProvider.java:74
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89
UriInfo uriInfo
Definition: FreeMarkerLoginFormsProvider.java:94
void handleMessages(Locale locale, Properties messagesBundle)
Definition: FreeMarkerLoginFormsProvider.java:304
RealmModel realm
Definition: FreeMarkerLoginFormsProvider.java:92
String accessCode
Definition: FreeMarkerLoginFormsProvider.java:76
Properties handleThemeResources(Theme theme, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:277
UriBuilder prepareBaseUriBuilder(boolean resetRequestUriParams)
Definition: FreeMarkerLoginFormsProvider.java:244
MultivaluedMap< String, String > formData
Definition: FreeMarkerLoginFormsProvider.java:87
List< ClientScopeModel > clientScopesRequested
Definition: FreeMarkerLoginFormsProvider.java:79
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85
ClientModel client
Definition: FreeMarkerLoginFormsProvider.java:93
ERROR
Definition: MessageType.java:26

◆ createUpdateProfilePage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createUpdateProfilePage ( )
inline
474  {
475  // Don't display initial message if we already have some errors
476  if (messageType != MessageType.ERROR) {
477  setMessage(MessageType.WARNING, Messages.UPDATE_PROFILE);
478  }
479 
480  return createResponse(LoginFormsPages.LOGIN_UPDATE_PROFILE);
481  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerLoginFormsProvider.java:524
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119
ERROR
Definition: MessageType.java:26

◆ createX509ConfirmPage()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createX509ConfirmPage ( )
inline
520  {
521  return createResponse(LoginFormsPages.X509_CONFIRM);
522  }
Response createResponse(UserModel.RequiredAction action)
Definition: FreeMarkerLoginFormsProvider.java:119

◆ formatMessage()

String org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.formatMessage ( FormMessage  message,
Properties  messagesBundle,
Locale  locale 
)
inlineprotected
537  {
538  if (message == null)
539  return null;
540  if (messagesBundle.containsKey(message.getMessage())) {
541  return new MessageFormat(messagesBundle.getProperty(message.getMessage()), locale).format(message.getParameters());
542  } else {
543  return message.getMessage();
544  }
545  }

◆ getFirstMessageUnformatted()

String org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.getFirstMessageUnformatted ( )
inlineprotected
530  {
531  if (messages != null && !messages.isEmpty()) {
532  return messages.get(0).getMessage();
533  }
534  return null;
535  }
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84

◆ getMessage() [1/2]

String org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.getMessage ( String  message)
inline
323  {
324  Theme theme;
325  try {
326  theme = getTheme();
327  } catch (IOException e) {
328  logger.error("Failed to create theme", e);
329  throw new RuntimeException("Failed to create theme");
330  }
331 
332  Locale locale = session.getContext().resolveLocale(user);
333  Properties messagesBundle = handleThemeResources(theme, locale);
334  FormMessage msg = new FormMessage(null, message);
335  return formatMessage(msg, messagesBundle, locale);
336  }
String formatMessage(FormMessage message, Properties messagesBundle, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:537
Theme getTheme()
Definition: FreeMarkerLoginFormsProvider.java:266
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98
static final Logger logger
Definition: FreeMarkerLoginFormsProvider.java:74
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89
Properties handleThemeResources(Theme theme, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:277

◆ getMessage() [2/2]

String org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.getMessage ( String  message,
String...  parameters 
)
inline
339  {
340  Theme theme;
341  try {
342  theme = getTheme();
343  } catch (IOException e) {
344  logger.error("Failed to create theme", e);
345  throw new RuntimeException("Failed to create theme");
346  }
347 
348  Locale locale = session.getContext().resolveLocale(user);
349  Properties messagesBundle = handleThemeResources(theme, locale);
350  FormMessage msg = new FormMessage(message, (Object[]) parameters);
351  return formatMessage(msg, messagesBundle, locale);
352  }
String formatMessage(FormMessage message, Properties messagesBundle, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:537
Theme getTheme()
Definition: FreeMarkerLoginFormsProvider.java:266
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98
static final Logger logger
Definition: FreeMarkerLoginFormsProvider.java:74
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89
Properties handleThemeResources(Theme theme, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:277

◆ getTheme()

Theme org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.getTheme ( ) throws IOException
inlineprotected

Get Theme used for page rendering.

戻り値
theme for page rendering, never null
例外
IOExceptionin case of Theme loading problem
266  {
267  return session.theme().getTheme(Theme.Type.LOGIN);
268  }
KeycloakSession session
Definition: FreeMarkerLoginFormsProvider.java:89

◆ handleMessages()

void org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.handleMessages ( Locale  locale,
Properties  messagesBundle 
)
inlineprotected

Handle messages to be shown on the page - set them to template attributes

引数
localeto be used for message text loading
messagesBundleto be used for message text loading
参照
messageType
messages
304  {
305  MessagesPerFieldBean messagesPerField = new MessagesPerFieldBean();
306  if (messages != null) {
307  MessageBean wholeMessage = new MessageBean(null, messageType);
308  for (FormMessage message : this.messages) {
309  String formattedMessageText = formatMessage(message, messagesBundle, locale);
310  if (formattedMessageText != null) {
311  wholeMessage.appendSummaryLine(formattedMessageText);
312  messagesPerField.addMessage(message.getField(), formattedMessageText, messageType);
313  }
314  }
315  attributes.put("message", wholeMessage);
316  } else {
317  attributes.put("message", null);
318  }
319  attributes.put("messagesPerField", messagesPerField);
320  }
String formatMessage(FormMessage message, Properties messagesBundle, Locale locale)
Definition: FreeMarkerLoginFormsProvider.java:537
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85

◆ handleThemeResources()

Properties org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.handleThemeResources ( Theme  theme,
Locale  locale 
)
inlineprotected

Load message bundle and place it into msg template attribute. Also load Theme properties and place them into properties template attribute.

引数
themeactual Theme to load bundle from
localeto load bundle for
戻り値
message bundle for other use
277  {
278  Properties messagesBundle;
279  try {
280  messagesBundle = theme.getMessages(locale);
281  attributes.put("msg", new MessageFormatterMethod(locale, messagesBundle));
282  } catch (IOException e) {
283  logger.warn("Failed to load messages", e);
284  messagesBundle = new Properties();
285  }
286 
287  try {
288  attributes.put("properties", theme.getProperties());
289  } catch (IOException e) {
290  logger.warn("Failed to load properties", e);
291  }
292 
293  return messagesBundle;
294  }
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
static final Logger logger
Definition: FreeMarkerLoginFormsProvider.java:74

◆ prepareBaseUriBuilder()

UriBuilder org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.prepareBaseUriBuilder ( boolean  resetRequestUriParams)
inlineprotected

Prepare base uri builder for later use

引数
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
戻り値
base uri builder
244  {
245  String requestURI = uriInfo.getBaseUri().getPath();
246  UriBuilder uriBuilder = UriBuilder.fromUri(requestURI);
247  if (resetRequestUriParams) {
248  uriBuilder.replaceQuery(null);
249  }
250 
251  if (client != null) {
252  uriBuilder.queryParam(Constants.CLIENT_ID, client.getClientId());
253  }
254  if (authenticationSession != null) {
255  uriBuilder.queryParam(Constants.TAB_ID, authenticationSession.getTabId());
256  }
257  return uriBuilder;
258  }
AuthenticationSessionModel authenticationSession
Definition: FreeMarkerLoginFormsProvider.java:91
UriInfo uriInfo
Definition: FreeMarkerLoginFormsProvider.java:94
ClientModel client
Definition: FreeMarkerLoginFormsProvider.java:93

◆ processTemplate()

Response org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.processTemplate ( Theme  theme,
String  templateName,
Locale  locale 
)
inlineprotected

Process FreeMarker template and prepare Response. Some fields are used for rendering also.

引数
themeto be used (provided by getTheme())
templateNamename of the template to be rendered
localeto be used
戻り値
Response object to be returned to the browser, never null
432  {
433  try {
434  String result = freeMarker.processTemplate(attributes, templateName, theme);
435  javax.ws.rs.core.MediaType mediaType = contentType == null ? MediaType.TEXT_HTML_UTF_8_TYPE : contentType;
436  Response.ResponseBuilder builder = Response.status(status == null ? Response.Status.OK : status).type(mediaType).language(locale).entity(result);
437  BrowserSecurityHeaderSetup.headers(builder, realm);
438  for (Map.Entry<String, String> entry : httpResponseHeaders.entrySet()) {
439  builder.header(entry.getKey(), entry.getValue());
440  }
441  return builder.build();
442  } catch (FreeMarkerException e) {
443  logger.error("Failed to process template", e);
444  return Response.serverError().build();
445  }
446  }
Response.Status status
Definition: FreeMarkerLoginFormsProvider.java:77
static final javax.ws.rs.core.MediaType TEXT_HTML_UTF_8_TYPE
Definition: MediaType.java:26
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100
static final Logger logger
Definition: FreeMarkerLoginFormsProvider.java:74
javax.ws.rs.core.MediaType contentType
Definition: FreeMarkerLoginFormsProvider.java:78
RealmModel realm
Definition: FreeMarkerLoginFormsProvider.java:92
Map< String, String > httpResponseHeaders
Definition: FreeMarkerLoginFormsProvider.java:80
FreeMarkerUtil freeMarker
Definition: FreeMarkerLoginFormsProvider.java:96
String processTemplate(Object data, String templateName, Theme theme)
Definition: FreeMarkerUtil.java:47

◆ setAccessRequest()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setAccessRequest ( List< ClientScopeModel >  clientScopesRequested)
inline
629  {
631  return this;
632  }
List< ClientScopeModel > clientScopesRequested
Definition: FreeMarkerLoginFormsProvider.java:79

◆ setActionUri()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setActionUri ( URI  actionUri)
inline
653  {
654  this.actionUri = actionUri;
655  return this;
656  }
URI actionUri
Definition: FreeMarkerLoginFormsProvider.java:81

◆ setAttribute()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setAttribute ( String  name,
Object  value 
)
inline
635  {
636  this.attributes.put(name, value);
637  return this;
638  }
final Map< String, Object > attributes
Definition: FreeMarkerLoginFormsProvider.java:100

◆ setAuthenticationSession()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setAuthenticationSession ( AuthenticationSessionModel  authenticationSession)
inline
605  {
607  return this;
608  }
AuthenticationSessionModel authenticationSession
Definition: FreeMarkerLoginFormsProvider.java:91

◆ setClientSessionCode()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setClientSessionCode ( String  accessCode)
inline
623  {
624  this.accessCode = accessCode;
625  return this;
626  }
String accessCode
Definition: FreeMarkerLoginFormsProvider.java:76

◆ setError()

FreeMarkerLoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setError ( String  message,
Object...  parameters 
)
inline
548  {
549  setMessage(MessageType.ERROR, message, parameters);
550  return this;
551  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerLoginFormsProvider.java:524

◆ setErrors()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setErrors ( List< FormMessage >  messages)
inline
554  {
555  if (messages == null)
556  return this;
557  this.messageType = MessageType.ERROR;
558  this.messages = new ArrayList<>(messages);
559  return this;
560  }
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85
ERROR
Definition: MessageType.java:26

◆ setExecution()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setExecution ( String  execution)
inline
659  {
660  this.execution = execution;
661  return this;
662  }
String execution
Definition: FreeMarkerLoginFormsProvider.java:82

◆ setFormData()

FreeMarkerLoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setFormData ( MultivaluedMap< String, String >  formData)
inline
617  {
618  this.formData = formData;
619  return this;
620  }
MultivaluedMap< String, String > formData
Definition: FreeMarkerLoginFormsProvider.java:87

◆ setInfo()

FreeMarkerLoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setInfo ( String  message,
Object...  parameters 
)
inline
599  {
600  setMessage(MessageType.INFO, message, parameters);
601  return this;
602  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerLoginFormsProvider.java:524

◆ setMediaType()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setMediaType ( javax.ws.rs.core.MediaType  type)
inline
647  {
648  this.contentType = type;
649  return this;
650  }
javax.ws.rs.core.MediaType contentType
Definition: FreeMarkerLoginFormsProvider.java:78

◆ setMessage()

void org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setMessage ( MessageType  type,
String  message,
Object...  parameters 
)
inlineprotected
524  {
525  messageType = type;
526  messages = new ArrayList<>();
527  messages.add(new FormMessage(null, message, parameters));
528  }
List< FormMessage > messages
Definition: FreeMarkerLoginFormsProvider.java:84
MessageType messageType
Definition: FreeMarkerLoginFormsProvider.java:85

◆ setResponseHeader()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setResponseHeader ( String  headerName,
String  headerValue 
)
inline
665  {
666  this.httpResponseHeaders.put(headerName, headerValue);
667  return this;
668  }
Map< String, String > httpResponseHeaders
Definition: FreeMarkerLoginFormsProvider.java:80

◆ setStatus()

LoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setStatus ( Response.Status  status)
inline
641  {
642  this.status = status;
643  return this;
644  }
Response.Status status
Definition: FreeMarkerLoginFormsProvider.java:77

◆ setSuccess()

FreeMarkerLoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setSuccess ( String  message,
Object...  parameters 
)
inline
593  {
594  setMessage(MessageType.SUCCESS, message, parameters);
595  return this;
596  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerLoginFormsProvider.java:524

◆ setUser()

FreeMarkerLoginFormsProvider org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.setUser ( UserModel  user)
inline
611  {
612  this.user = user;
613  return this;
614  }
UserModel user
Definition: FreeMarkerLoginFormsProvider.java:98

メンバ詳解

◆ accessCode

String org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.accessCode
protected

◆ actionUri

URI org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.actionUri
protected

◆ attributes

final Map<String, Object> org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.attributes = new HashMap<>()
protected

◆ authenticationSession

AuthenticationSessionModel org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.authenticationSession
protected

authenticationSession can be null for some renderings, mainly error pages

◆ client

ClientModel org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.client
protected

◆ clientScopesRequested

List<ClientScopeModel> org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.clientScopesRequested
protected

◆ contentType

javax.ws.rs.core.MediaType org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.contentType
protected

◆ execution

String org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.execution
protected

◆ formData

MultivaluedMap<String, String> org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.formData
protected

◆ freeMarker

FreeMarkerUtil org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.freeMarker
protected

◆ httpResponseHeaders

Map<String, String> org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.httpResponseHeaders = new HashMap<>()
protected

◆ logger

final Logger org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.logger = Logger.getLogger(FreeMarkerLoginFormsProvider.class)
staticprivate

◆ messages

List<FormMessage> org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.messages = null
protected

◆ messageType

MessageType org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.messageType = MessageType.ERROR
protected

◆ realm

RealmModel org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.realm
protected

◆ session

KeycloakSession org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.session
protected

◆ status

Response.Status org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.status
protected

◆ uriInfo

UriInfo org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.uriInfo
protected

◆ user

UserModel org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.user
protected

このクラス詳解は次のファイルから抽出されました: