gluu
公開メンバ関数 | 関数 | 非公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.gluu.credmanager.core.navigation.HomeInitiator クラス
org.gluu.credmanager.core.navigation.HomeInitiator の継承関係図
Inheritance graph
org.gluu.credmanager.core.navigation.HomeInitiator 連携図
Collaboration graph

公開メンバ関数

void doInit (Page page, Map< String, Object > map)
 
void init (Page page)
 

関数

void setPageErrors (Page page, String error, String description)
 

非公開メンバ関数

void goForAuthorization () throws Exception
 
boolean errorsParsed (Page page)
 

非公開変数類

Logger logger = LoggerFactory.getLogger(getClass())
 
AuthFlowContext flowContext
 
OxdService oxdService
 

詳解

This is a ZK Page Initiator (the doInit method is called before any rendering of UI components). It's the initiator associated to the /index.zul URL (home URL) so here's where the authentication flow is handled.

著者
jgomer

関数詳解

◆ doInit()

void org.gluu.credmanager.core.navigation.HomeInitiator.doInit ( Page  page,
Map< String, Object >  map 
)
inline
38  {
39 
40  init(page);
41  if (page.getAttribute("error") == null) {
42 
43  flowContext = Utils.managedBean(AuthFlowContext.class);
44  oxdService = Utils.managedBean(OxdService.class);
45  try {
46  switch (flowContext.getStage()) {
47  case NONE:
48  try {
50  } catch (Exception e) {
51  String error = "An error occurred during authorization step";
52  setPageErrors(page, error, e.getMessage());
53  logger.error(error, e);
54  }
55  break;
56  case INITIAL:
57  //If IDP response contains error query parameter we cannot proceed
58  if (errorsParsed(page)) {
59  flowContext.setStage(NONE);
60  } else {
61  String code = WebUtils.getQueryParam("code");
62  if (code == null) {
63  //This may happen when user did not ever entered his username at IDP, and tries accessing the app again
65  } else {
66  Pair<String, String> tokens = oxdService.getTokens(code, WebUtils.getQueryParam("state"));
67  String accessToken = tokens.getX();
68  String idToken = tokens.getY();
69  logger.debug("Authorization code={}, Access token={}, Id token {}", code, accessToken, idToken);
70 
71  User user = Utils.managedBean(UserService.class).getUserFromClaims(oxdService.getUserClaims(accessToken));
72  //Store in session
73  logger.debug("Adding user to session");
74  Utils.managedBean(SessionContext.class).setUser(user);
75  flowContext.setIdToken(idToken);
76  flowContext.setStage(BYPASS);
77  //This flow continues at index.zul
78  }
79  }
80  break;
81  case BYPASS:
82  //go straight without the need for showing UI
83  logger.debug("Taking user to homepage...");
84  User user = Utils.managedBean(SessionContext.class).getUser();
85  WebUtils.execRedirect(user.isAdmin()? WebUtils.ADMIN_PAGE_URL : WebUtils.USER_PAGE_URL);
86  break;
87  default:
88  //Added to pass style checker
89  }
90  } catch (Exception e) {
91  logger.error(e.getMessage(), e);
92  setPageErrors(page, Labels.getLabel("general.error.general"), e.getMessage());
93  flowContext.setStage(NONE);
94  }
95 
96  }
97  }
Pair< String, String > getTokens(String code, String state)
Definition: OxdService.java:283
OxdService oxdService
Definition: HomeInitiator.java:36
boolean errorsParsed(Page page)
Definition: HomeInitiator.java:107
void init(Page page)
Definition: CommonInitiator.java:19
Map< String, List< String > > getUserClaims(String accessToken)
Definition: OxdService.java:308
void setPageErrors(Page page, String error, String description)
Definition: CommonInitiator.java:38
void goForAuthorization()
Definition: HomeInitiator.java:100
void setIdToken(String idToken)
Definition: AuthFlowContext.java:39
AuthFlowContext flowContext
Definition: HomeInitiator.java:35
RedirectStage getStage()
Definition: AuthFlowContext.java:27
Logger logger
Definition: HomeInitiator.java:33
void setStage(RedirectStage stage)
Definition: AuthFlowContext.java:35

◆ errorsParsed()

boolean org.gluu.credmanager.core.navigation.HomeInitiator.errorsParsed ( Page  page)
inlineprivate
107  {
108 
109  String error = WebUtils.getQueryParam("error");
110  boolean errorsFound = error != null;
111  if (errorsFound) {
112  setPageErrors(page, error, WebUtils.getQueryParam("error_description"));
113  }
114  return errorsFound;
115 
116  }
void setPageErrors(Page page, String error, String description)
Definition: CommonInitiator.java:38

◆ goForAuthorization()

void org.gluu.credmanager.core.navigation.HomeInitiator.goForAuthorization ( ) throws Exception
inlineprivate
100  {
101  flowContext.setStage(INITIAL);
102  logger.debug("Starting authorization flow");
103  //do Authz Redirect
104  WebUtils.execRedirect(oxdService.getAuthzUrl(ConfigurationHandler.DEFAULT_ACR));
105  }
OxdService oxdService
Definition: HomeInitiator.java:36
String getAuthzUrl(List< String > acrValues, String prompt)
Definition: OxdService.java:255
AuthFlowContext flowContext
Definition: HomeInitiator.java:35
Logger logger
Definition: HomeInitiator.java:33
void setStage(RedirectStage stage)
Definition: AuthFlowContext.java:35

◆ init()

void org.gluu.credmanager.core.navigation.CommonInitiator.init ( Page  page)
inlineinherited
19  {
20 
21  AppStateEnum state = Utils.managedBean(ConfigurationHandler.class).getAppState();
22  state = state == null ? AppStateEnum.LOADING : state;
23  String err = Labels.getLabel("general.error.general");
24 
25  switch (state) {
26  case LOADING:
27  setPageErrors(page, err, Labels.getLabel("general.app_starting"));
28  break;
29  case FAIL:
30  setPageErrors(page, err, Labels.getLabel("general.app_not_started"));
31  break;
32  default:
33  //Added to pass the style checker :(
34  }
35 
36  }
void setPageErrors(Page page, String error, String description)
Definition: CommonInitiator.java:38

◆ setPageErrors()

void org.gluu.credmanager.core.navigation.CommonInitiator.setPageErrors ( Page  page,
String  error,
String  description 
)
inlinepackageinherited
38  {
39  page.setAttribute("error", error);
40  page.setAttribute("description", description);
41  }

メンバ詳解

◆ flowContext

AuthFlowContext org.gluu.credmanager.core.navigation.HomeInitiator.flowContext
private

◆ logger

Logger org.gluu.credmanager.core.navigation.HomeInitiator.logger = LoggerFactory.getLogger(getClass())
private

◆ oxdService

OxdService org.gluu.credmanager.core.navigation.HomeInitiator.oxdService
private

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