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

公開メンバ関数

 FreeMarkerAccountProvider (KeycloakSession session, FreeMarkerUtil freeMarker)
 
AccountProvider setUriInfo (UriInfo uriInfo)
 
AccountProvider setHttpHeaders (HttpHeaders httpHeaders)
 
Response createResponse (AccountPages page)
 
AccountProvider setPasswordSet (boolean passwordSet)
 
AccountProvider setErrors (Response.Status status, List< FormMessage > messages)
 
AccountProvider setError (Response.Status status, String message, Object ... parameters)
 
AccountProvider setSuccess (String message, Object ... parameters)
 
AccountProvider setWarning (String message, Object ... parameters)
 
AccountProvider setUser (UserModel user)
 
AccountProvider setProfileFormData (MultivaluedMap< String, String > formData)
 
AccountProvider setRealm (RealmModel realm)
 
AccountProvider setReferrer (String[] referrer)
 
AccountProvider setEvents (List< Event > events)
 
AccountProvider setSessions (List< UserSessionModel > sessions)
 
AccountProvider setStateChecker (String stateChecker)
 
AccountProvider setFeatures (boolean identityProviderEnabled, boolean eventsEnabled, boolean passwordUpdateSupported, boolean authorizationSupported)
 
AccountProvider setAttribute (String key, String value)
 
void close ()
 

限定公開メンバ関数

Theme getTheme () throws IOException
 
Properties handleThemeResources (Theme theme, Locale locale, Map< String, Object > attributes)
 
void handleMessages (Locale locale, Properties messagesBundle, Map< String, Object > attributes)
 
Response processTemplate (Theme theme, AccountPages page, Map< String, Object > attributes, Locale locale)
 
void setMessage (MessageType type, String message, Object... parameters)
 
String formatMessage (FormMessage message, Properties messagesBundle, Locale locale)
 

限定公開変数類

UserModel user
 
MultivaluedMap< String, String > profileFormData
 
Response.Status status = Response.Status.OK
 
RealmModel realm
 
String [] referrer
 
List< Event > events
 
String stateChecker
 
List< UserSessionModel > sessions
 
boolean identityProviderEnabled
 
boolean eventsEnabled
 
boolean passwordUpdateSupported
 
boolean passwordSet
 
KeycloakSession session
 
FreeMarkerUtil freeMarker
 
HttpHeaders headers
 
Map< String, Object > attributes
 
UriInfo uriInfo
 
List< FormMessage > messages = null
 
MessageType messageType = MessageType.ERROR
 

非公開変数類

boolean authorizationSupported
 

静的非公開変数類

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

詳解

著者
Stian Thorgersen

構築子と解体子

◆ FreeMarkerAccountProvider()

org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.FreeMarkerAccountProvider ( KeycloakSession  session,
FreeMarkerUtil  freeMarker 
)
inline
99  {
100  this.session = session;
101  this.freeMarker = freeMarker;
102  }
FreeMarkerUtil freeMarker
Definition: FreeMarkerAccountProvider.java:89
KeycloakSession session
Definition: FreeMarkerAccountProvider.java:88

関数詳解

◆ close()

void org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.close ( )
inline
391  {
392  }

◆ createResponse()

Response org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.createResponse ( AccountPages  page)
inline
116  {
117  Map<String, Object> attributes = new HashMap<>();
118 
119  if (this.attributes != null) {
120  attributes.putAll(this.attributes);
121  }
122 
123  Theme theme;
124  try {
125  theme = getTheme();
126  } catch (IOException e) {
127  logger.error("Failed to create theme", e);
128  return Response.serverError().build();
129  }
130 
131  Locale locale = session.getContext().resolveLocale(user);
132  Properties messagesBundle = handleThemeResources(theme, locale, attributes);
133 
134  URI baseUri = uriInfo.getBaseUri();
135  UriBuilder baseUriBuilder = uriInfo.getBaseUriBuilder();
136  for (Map.Entry<String, List<String>> e : uriInfo.getQueryParameters().entrySet()) {
137  baseUriBuilder.queryParam(e.getKey(), e.getValue().toArray());
138  }
139  URI baseQueryUri = baseUriBuilder.build();
140 
141  if (stateChecker != null) {
142  attributes.put("stateChecker", stateChecker);
143  }
144 
145  handleMessages(locale, messagesBundle, attributes);
146 
147  if (referrer != null) {
148  attributes.put("referrer", new ReferrerBean(referrer));
149  }
150 
151  if(realm != null){
152  attributes.put("realm", new RealmBean(realm));
153  }
154 
155  attributes.put("url", new UrlBean(realm, theme, baseUri, baseQueryUri, uriInfo.getRequestUri(), stateChecker));
156 
157  if (realm.isInternationalizationEnabled()) {
158  UriBuilder b = UriBuilder.fromUri(baseQueryUri).path(uriInfo.getPath());
159  attributes.put("locale", new LocaleBean(realm, locale, b, messagesBundle));
160  }
161 
162  attributes.put("features", new FeaturesBean(identityProviderEnabled, eventsEnabled, passwordUpdateSupported, authorizationSupported));
163  attributes.put("account", new AccountBean(user, profileFormData));
164 
165  switch (page) {
166  case TOTP:
167  attributes.put("totp", new TotpBean(session, realm, user, uriInfo.getRequestUriBuilder()));
168  break;
169  case FEDERATED_IDENTITY:
170  attributes.put("federatedIdentity", new AccountFederatedIdentityBean(session, realm, user, uriInfo.getBaseUri(), stateChecker));
171  break;
172  case LOG:
173  attributes.put("log", new LogBean(events));
174  break;
175  case SESSIONS:
176  attributes.put("sessions", new SessionsBean(realm, sessions));
177  break;
178  case APPLICATIONS:
179  attributes.put("applications", new ApplicationsBean(session, realm, user));
180  attributes.put("advancedMsg", new AdvancedMessageFormatterMethod(locale, messagesBundle));
181  break;
182  case PASSWORD:
183  attributes.put("password", new PasswordBean(passwordSet));
184  break;
185  case RESOURCES:
186  if (!realm.isUserManagedAccessAllowed()) {
187  return Response.status(Status.FORBIDDEN).build();
188  }
189  attributes.put("authorization", new AuthorizationBean(session, user, uriInfo));
190  case RESOURCE_DETAIL:
191  if (!realm.isUserManagedAccessAllowed()) {
192  return Response.status(Status.FORBIDDEN).build();
193  }
194  attributes.put("authorization", new AuthorizationBean(session, user, uriInfo));
195  }
196 
197  return processTemplate(theme, page, attributes, locale);
198  }
List< UserSessionModel > sessions
Definition: FreeMarkerAccountProvider.java:83
boolean identityProviderEnabled
Definition: FreeMarkerAccountProvider.java:84
List< Event > events
Definition: FreeMarkerAccountProvider.java:81
String [] referrer
Definition: FreeMarkerAccountProvider.java:80
RealmModel realm
Definition: FreeMarkerAccountProvider.java:79
UserModel user
Definition: FreeMarkerAccountProvider.java:76
Theme getTheme()
Definition: FreeMarkerAccountProvider.java:206
UriInfo uriInfo
Definition: FreeMarkerAccountProvider.java:93
void handleMessages(Locale locale, Properties messagesBundle, Map< String, Object > attributes)
Definition: FreeMarkerAccountProvider.java:244
boolean eventsEnabled
Definition: FreeMarkerAccountProvider.java:85
boolean passwordUpdateSupported
Definition: FreeMarkerAccountProvider.java:86
Properties handleThemeResources(Theme theme, Locale locale, Map< String, Object > attributes)
Definition: FreeMarkerAccountProvider.java:218
boolean passwordSet
Definition: FreeMarkerAccountProvider.java:87
MultivaluedMap< String, String > profileFormData
Definition: FreeMarkerAccountProvider.java:77
Response processTemplate(Theme theme, AccountPages page, Map< String, Object > attributes, Locale locale)
Definition: FreeMarkerAccountProvider.java:269
String stateChecker
Definition: FreeMarkerAccountProvider.java:82
Map< String, Object > attributes
Definition: FreeMarkerAccountProvider.java:91
static final Logger logger
Definition: FreeMarkerAccountProvider.java:74
KeycloakSession session
Definition: FreeMarkerAccountProvider.java:88
boolean authorizationSupported
Definition: FreeMarkerAccountProvider.java:97

◆ formatMessage()

String org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.formatMessage ( FormMessage  message,
Properties  messagesBundle,
Locale  locale 
)
inlineprotected
292  {
293  if (message == null)
294  return null;
295  if (messagesBundle.containsKey(message.getMessage())) {
296  return new MessageFormat(messagesBundle.getProperty(message.getMessage()), locale).format(message.getParameters());
297  } else {
298  return message.getMessage();
299  }
300  }

◆ getTheme()

Theme org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.getTheme ( ) throws IOException
inlineprotected

Get Theme used for page rendering.

戻り値
theme for page rendering, never null
例外
IOExceptionin case of Theme loading problem
206  {
207  return session.theme().getTheme(Theme.Type.ACCOUNT);
208  }
KeycloakSession session
Definition: FreeMarkerAccountProvider.java:88

◆ handleMessages()

void org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.handleMessages ( Locale  locale,
Properties  messagesBundle,
Map< String, Object >  attributes 
)
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
attributestemplate attributes to messages related info to
参照
messageType
messages
244  {
245  MessagesPerFieldBean messagesPerField = new MessagesPerFieldBean();
246  if (messages != null) {
247  MessageBean wholeMessage = new MessageBean(null, messageType);
248  for (FormMessage message : this.messages) {
249  String formattedMessageText = formatMessage(message, messagesBundle, locale);
250  if (formattedMessageText != null) {
251  wholeMessage.appendSummaryLine(formattedMessageText);
252  messagesPerField.addMessage(message.getField(), formattedMessageText, messageType);
253  }
254  }
255  attributes.put("message", wholeMessage);
256  }
257  attributes.put("messagesPerField", messagesPerField);
258  }
String formatMessage(FormMessage message, Properties messagesBundle, Locale locale)
Definition: FreeMarkerAccountProvider.java:292
MessageType messageType
Definition: FreeMarkerAccountProvider.java:96
Map< String, Object > attributes
Definition: FreeMarkerAccountProvider.java:91
List< FormMessage > messages
Definition: FreeMarkerAccountProvider.java:95

◆ handleThemeResources()

Properties org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.handleThemeResources ( Theme  theme,
Locale  locale,
Map< String, Object >  attributes 
)
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
attributestemplate attributes to add resources to
戻り値
message bundle for other use
218  {
219  Properties messagesBundle;
220  try {
221  messagesBundle = theme.getMessages(locale);
222  attributes.put("msg", new MessageFormatterMethod(locale, messagesBundle));
223  } catch (IOException e) {
224  logger.warn("Failed to load messages", e);
225  messagesBundle = new Properties();
226  }
227  try {
228  attributes.put("properties", theme.getProperties());
229  } catch (IOException e) {
230  logger.warn("Failed to load properties", e);
231  }
232  return messagesBundle;
233  }
Map< String, Object > attributes
Definition: FreeMarkerAccountProvider.java:91
static final Logger logger
Definition: FreeMarkerAccountProvider.java:74

◆ processTemplate()

Response org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.processTemplate ( Theme  theme,
AccountPages  page,
Map< String, Object >  attributes,
Locale  locale 
)
inlineprotected

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

引数
themeto be used (provided by getTheme())
pageto be rendered
attributespushed to the template
localeto be used
戻り値
Response object to be returned to the browser, never null
269  {
270  try {
271  String result = freeMarker.processTemplate(attributes, Templates.getTemplate(page), theme);
272  Response.ResponseBuilder builder = Response.status(status).type(MediaType.TEXT_HTML_UTF_8_TYPE).language(locale).entity(result);
273  BrowserSecurityHeaderSetup.headers(builder, realm);
274  return builder.build();
275  } catch (FreeMarkerException e) {
276  logger.error("Failed to process template", e);
277  return Response.serverError().build();
278  }
279  }
RealmModel realm
Definition: FreeMarkerAccountProvider.java:79
Response.Status status
Definition: FreeMarkerAccountProvider.java:78
FreeMarkerUtil freeMarker
Definition: FreeMarkerAccountProvider.java:89
Map< String, Object > attributes
Definition: FreeMarkerAccountProvider.java:91
static final Logger logger
Definition: FreeMarkerAccountProvider.java:74
String processTemplate(Object data, String templateName, Theme theme)
Definition: FreeMarkerUtil.java:47

◆ setAttribute()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setAttribute ( String  key,
String  value 
)
inline
382  {
383  if (attributes == null) {
384  attributes = new HashMap<>();
385  }
386  attributes.put(key, value);
387  return this;
388  }
Map< String, Object > attributes
Definition: FreeMarkerAccountProvider.java:91

◆ setError()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setError ( Response.Status  status,
String  message,
Object ...  parameters 
)
inline
312  {
313  this.status = status;
314  setMessage(MessageType.ERROR, message, parameters);
315  return this;
316  }
Response.Status status
Definition: FreeMarkerAccountProvider.java:78
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerAccountProvider.java:286

◆ setErrors()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setErrors ( Response.Status  status,
List< FormMessage >  messages 
)
inline
303  {
304  this.status = status;
305  this.messageType = MessageType.ERROR;
306  this.messages = new ArrayList<>(messages);
307  return this;
308  }
Response.Status status
Definition: FreeMarkerAccountProvider.java:78
MessageType messageType
Definition: FreeMarkerAccountProvider.java:96
ERROR
Definition: MessageType.java:26
List< FormMessage > messages
Definition: FreeMarkerAccountProvider.java:95

◆ setEvents()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setEvents ( List< Event >  events)
inline
355  {
356  this.events = events;
357  return this;
358  }
List< Event > events
Definition: FreeMarkerAccountProvider.java:81

◆ setFeatures()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setFeatures ( boolean  identityProviderEnabled,
boolean  eventsEnabled,
boolean  passwordUpdateSupported,
boolean  authorizationSupported 
)
inline
373  {
378  return this;
379  }
boolean identityProviderEnabled
Definition: FreeMarkerAccountProvider.java:84
boolean eventsEnabled
Definition: FreeMarkerAccountProvider.java:85
boolean passwordUpdateSupported
Definition: FreeMarkerAccountProvider.java:86
boolean authorizationSupported
Definition: FreeMarkerAccountProvider.java:97

◆ setHttpHeaders()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setHttpHeaders ( HttpHeaders  httpHeaders)
inline
110  {
111  this.headers = httpHeaders;
112  return this;
113  }
HttpHeaders headers
Definition: FreeMarkerAccountProvider.java:90

◆ setMessage()

void org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setMessage ( MessageType  type,
String  message,
Object...  parameters 
)
inlineprotected
286  {
287  messageType = type;
288  messages = new ArrayList<>();
289  messages.add(new FormMessage(null, message, parameters));
290  }
MessageType messageType
Definition: FreeMarkerAccountProvider.java:96
List< FormMessage > messages
Definition: FreeMarkerAccountProvider.java:95

◆ setPasswordSet()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setPasswordSet ( boolean  passwordSet)
inline
281  {
282  this.passwordSet = passwordSet;
283  return this;
284  }
boolean passwordSet
Definition: FreeMarkerAccountProvider.java:87

◆ setProfileFormData()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setProfileFormData ( MultivaluedMap< String, String >  formData)
inline
337  {
338  this.profileFormData = formData;
339  return this;
340  }
MultivaluedMap< String, String > profileFormData
Definition: FreeMarkerAccountProvider.java:77

◆ setRealm()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setRealm ( RealmModel  realm)
inline
343  {
344  this.realm = realm;
345  return this;
346  }
RealmModel realm
Definition: FreeMarkerAccountProvider.java:79

◆ setReferrer()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setReferrer ( String []  referrer)
inline
349  {
350  this.referrer = referrer;
351  return this;
352  }
String [] referrer
Definition: FreeMarkerAccountProvider.java:80

◆ setSessions()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setSessions ( List< UserSessionModel >  sessions)
inline
361  {
362  this.sessions = sessions;
363  return this;
364  }
List< UserSessionModel > sessions
Definition: FreeMarkerAccountProvider.java:83

◆ setStateChecker()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setStateChecker ( String  stateChecker)
inline
367  {
368  this.stateChecker = stateChecker;
369  return this;
370  }
String stateChecker
Definition: FreeMarkerAccountProvider.java:82

◆ setSuccess()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setSuccess ( String  message,
Object ...  parameters 
)
inline
319  {
320  setMessage(MessageType.SUCCESS, message, parameters);
321  return this;
322  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerAccountProvider.java:286

◆ setUriInfo()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setUriInfo ( UriInfo  uriInfo)
inline
104  {
105  this.uriInfo = uriInfo;
106  return this;
107  }
UriInfo uriInfo
Definition: FreeMarkerAccountProvider.java:93

◆ setUser()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setUser ( UserModel  user)
inline
331  {
332  this.user = user;
333  return this;
334  }
UserModel user
Definition: FreeMarkerAccountProvider.java:76

◆ setWarning()

AccountProvider org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.setWarning ( String  message,
Object ...  parameters 
)
inline
325  {
326  setMessage(MessageType.WARNING, message, parameters);
327  return this;
328  }
void setMessage(MessageType type, String message, Object... parameters)
Definition: FreeMarkerAccountProvider.java:286

メンバ詳解

◆ attributes

Map<String, Object> org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.attributes
protected

◆ authorizationSupported

boolean org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.authorizationSupported
private

◆ events

List<Event> org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.events
protected

◆ eventsEnabled

boolean org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.eventsEnabled
protected

◆ freeMarker

FreeMarkerUtil org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.freeMarker
protected

◆ headers

HttpHeaders org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.headers
protected

◆ identityProviderEnabled

boolean org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.identityProviderEnabled
protected

◆ logger

final Logger org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.logger = Logger.getLogger(FreeMarkerAccountProvider.class)
staticprivate

◆ messages

List<FormMessage> org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.messages = null
protected

◆ messageType

MessageType org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.messageType = MessageType.ERROR
protected

◆ passwordSet

boolean org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.passwordSet
protected

◆ passwordUpdateSupported

boolean org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.passwordUpdateSupported
protected

◆ profileFormData

MultivaluedMap<String, String> org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.profileFormData
protected

◆ realm

RealmModel org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.realm
protected

◆ referrer

String [] org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.referrer
protected

◆ session

KeycloakSession org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.session
protected

◆ sessions

List<UserSessionModel> org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.sessions
protected

◆ stateChecker

String org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.stateChecker
protected

◆ status

Response.Status org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.status = Response.Status.OK
protected

◆ uriInfo

UriInfo org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.uriInfo
protected

◆ user

UserModel org.keycloak.forms.account.freemarker.FreeMarkerAccountProvider.user
protected

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