In this post, I will create a custom ADF application which uses OIM API to perform custom Identification logic and account claim process.
- User's Account is kept in Disable state at the start of the process.
- On the login page of OIM, provide a link for account claim process.
- Redirect the user to index.jsp of the custom ADF App.
- Forward the Account Claim page where the user provides UID, PIN, DOB and zip code.
- Verify all 4 values in OIM if true then forward the Change Password Page where in the challenge question are already set.
- User provides answers and claims the account by providing a new password in next page
- Failure conditions are :-
- No User Found with the UID.
- Multiple Users Found
- Account is already Claimed by some other user
- Failure in Account Claim because of failure in providing correct UID, PIN, DOB or zip code.
- After Claim, User account is enabled by OIM API.
- User is redirected back to the OIM's default login page where in he can login with the new password that he has set in step 6.
adfc-config.xml is the controller which holds together everything ADF applications.
1 <?xml version="1.0" encoding="windows-1252" ?>
2 <adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
3 <view id="AccountClaim">
4 <page>/view1.jspx</page>
5 </view>
6 <view id="view2">
7 <page>/view2.jspx</page>
8 </view>
9 <view id="view3">
10 <page>/view3.jspx</page>
11 </view>
12 <view id="view4">
13 <page>/view4.jspx</page>
14 </view>
15 <view id="view5">
16 <page>/view5.jspx</page>
17 </view>
18 <view id="ChangePassword">
19 <page>/ChangePassword.jspx</page>
20 </view>
21 <view id="ClaimSuccess">
22 <page>/ClaimSuccess.jspx</page>
23 </view>
24 <control-flow-rule id="__5">
25 <from-activity-id id="__6">AccountClaim</from-activity-id>
26 <control-flow-case id="__15">
27 <from-outcome id="__20">false</from-outcome>
28 <to-activity-id id="__14">AccountClaim</to-activity-id>
29 </control-flow-case>
30 <control-flow-case id="__22">
31 <from-outcome id="__23">cancel</from-outcome>
32 <to-activity-id id="__21">view3</to-activity-id>
33 </control-flow-case>
34 <control-flow-case id="__7">
35 <from-outcome id="__9">true</from-outcome>
36 <to-activity-id id="__8">ChangePassword</to-activity-id>
37 </control-flow-case>
38 </control-flow-rule>
39 <control-flow-rule id="__17">
40 <from-activity-id id="__16">*</from-activity-id>
41 <control-flow-case id="__19">
42 <to-activity-id id="__18">AccountClaim</to-activity-id>
43 </control-flow-case>
44 </control-flow-rule>
45 <control-flow-rule id="__53">
46 <from-activity-id id="__54">ChangePassword</from-activity-id>
47 <control-flow-case id="__55">
48 <from-outcome id="__57">true</from-outcome>
49 <to-activity-id id="__56">ClaimSuccess</to-activity-id>
50 </control-flow-case>
51 <control-flow-case id="__59">
52 <from-outcome id="__60">false</from-outcome>
53 <to-activity-id id="__58">view3</to-activity-id>
54 </control-flow-case>
55 <control-flow-case id="__62">
56 <from-outcome id="__63">NO_USER_FOUND</from-outcome>
57 <to-activity-id id="__61">view4</to-activity-id>
58 </control-flow-case>
59 <control-flow-case id="__64">
60 <from-outcome id="__66">CLAIMED_EARLIER</from-outcome>
61 <to-activity-id id="__65">view2</to-activity-id>
62 </control-flow-case>
63 <control-flow-case id="__68">
64 <from-outcome id="__69">MULTIPLE_USER_FOUND</from-outcome>
65 <to-activity-id id="__67">view5</to-activity-id>
66 </control-flow-case>
67 </control-flow-rule>
68 <managed-bean id="__1">
69 <managed-bean-name id="__2">backing_view1</managed-bean-name>
70 <managed-bean-class id="__4">view.resources.backing.View1</managed-bean-class>
71 <managed-bean-scope id="__3">backingBean</managed-bean-scope>
72 <!--oracle-jdev-comment:managed-bean-jsp-link:1view1.jspx-->
73 </managed-bean>
74 <managed-bean id="__10">
75 <managed-bean-name id="__12">backing_view2</managed-bean-name>
76 <managed-bean-class id="__11">view.resources.backing.View2</managed-bean-class>
77 <managed-bean-scope id="__13">backingBean</managed-bean-scope>
78 <!--oracle-jdev-comment:managed-bean-jsp-link:1view2.jspx-->
79 </managed-bean>
80 <managed-bean id="__35">
81 <managed-bean-name id="__37">backing_view4</managed-bean-name>
82 <managed-bean-class id="__34">view.resources.backing.View4</managed-bean-class>
83 <managed-bean-scope id="__36">backingBean</managed-bean-scope>
84 <!--oracle-jdev-comment:managed-bean-jsp-link:1view4.jspx-->
85 </managed-bean>
86 <managed-bean id="__44">
87 <managed-bean-name id="__41">backing_view5</managed-bean-name>
88 <managed-bean-class id="__43">view.resources.backing.View5</managed-bean-class>
89 <managed-bean-scope id="__42">backingBean</managed-bean-scope>
90 <!--oracle-jdev-comment:managed-bean-jsp-link:1view5.jspx-->
91 </managed-bean>
92 <managed-bean id="__46">
93 <managed-bean-name id="__47">backing_ChangePassword</managed-bean-name>
94 <managed-bean-class id="__45">view.resources.backing.ChangePassword</managed-bean-class>
95 <managed-bean-scope id="__48">backingBean</managed-bean-scope>
96 <!--oracle-jdev-comment:managed-bean-jsp-link:1ChangePassword.jspx-->
97 </managed-bean>
98 <managed-bean id="__51">
99 <managed-bean-name id="__50">challengeQnABean</managed-bean-name>
100 <managed-bean-class id="__49">view.resources.backing.ChallengeQnABean</managed-bean-class>
101 <managed-bean-scope id="__52">none</managed-bean-scope>
102 </managed-bean>
103 </adfc-config>
104
java code for
OIMOperator.java which embeds the backend OIM API.
1 package view.resources.backing;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5
6 import oracle.iam.platform.OIMClient;
7
8 import java.util.Hashtable;
9 import java.util.List;
10
11 import java.util.Map;
12
13 import javax.security.auth.login.LoginException;
14
15 import oracle.iam.identity.usermgmt.api.UserManager;
16 import oracle.iam.selfservice.self.selfmgmt.api.AuthenticatedSelfService;
17 import oracle.iam.identity.usermgmt.api.UserManager;
18 import oracle.iam.identity.usermgmt.vo.User;
19 import oracle.iam.identity.usermgmt.vo.UserManagerResult;
20 import oracle.iam.platform.OIMClient;
21 import oracle.iam.platform.Role;
22 import oracle.iam.selfservice.exception.AuthSelfServiceException;
23
24 import oracle.iam.selfservice.uself.uselfmgmt.api.UnauthenticatedSelfService;
25
26 import static view.resources.backing.PropertyLoader.oimURL;
27
28 public class OIMOperator {
29
30 private OIMClient client = null;
31 private String className = this.getClass().getSimpleName();
32 private boolean error = false;
33
34 OIMOperator(String user, String password) {
35 setOIMClient(oimURL);
36 login(user, password);
37 }
38
39 private void enter(String method) {
40 System.out.println("Entering " + method + " of class " + className);
41 }
42
43 private void exit(String method) {
44 System.out.println("Exiting " + method + " of class " + className);
45 }
46
47 AuthenticatedSelfService getAuthenticatedSelfService() {
48 String method =
49 Thread.currentThread().getStackTrace()[1].getMethodName();
50 enter(method);
51 AuthenticatedSelfService service = null;
52 try {
53 service = client.getService(AuthenticatedSelfService.class);
54 } catch (Exception e) {
55 e.printStackTrace();
56 System.out.println("e.toString() ->" + e.toString());
57 System.out.println("e.getMessage() ->" + e.getMessage());
58 setError(true);
59 }
60 exit(method);
61 return service;
62 }
63
64 UnauthenticatedSelfService getUnauthenticatedSelfService() {
65 String method =
66 Thread.currentThread().getStackTrace()[1].getMethodName();
67 enter(method);
68 UnauthenticatedSelfService service = null;
69 try {
70 service = client.getService(UnauthenticatedSelfService.class);
71 } catch (Exception e) {
72
73 e.printStackTrace();
74 System.out.println("e.toString() ->" + e.toString());
75 System.out.println("e.getMessage() ->" + e.getMessage());
76 setError(true);
77 }
78 exit(method);
79 return service;
80 }
81
82
83 UserManager getUserManager() {
84 String method =
85 Thread.currentThread().getStackTrace()[1].getMethodName();
86 enter(method);
87 UserManager service = null;
88 try {
89 service = client.getService(UserManager.class);
90 } catch (Exception e) {
91 e.printStackTrace();
92 System.out.println("e.toString() ->" + e.toString());
93 System.out.println("e.getMessage() ->" + e.getMessage());
94 setError(true);
95 }
96 exit(method);
97 return service;
98 }
99
100
101 public List<String> getChallengeAnswersAsList() {
102 return getChallengeQnAasList();
103 }
104
105 private List<String> getSArrayToList(String[] s_arr) {
106 List<String> list = new ArrayList<String>(Arrays.asList(s_arr));
107 return list;
108 }
109
110 String[] getChallengeQnA() {
111
112 String method =
113 Thread.currentThread().getStackTrace()[1].getMethodName();
114 enter(method);
115 String[] CnA = null;
116 try {
117 AuthenticatedSelfService service = getAuthenticatedSelfService();
118 CnA = service.getSystemChallengeQuestions();
119 } catch (Exception e) {
120 e.printStackTrace();
121 System.out.println("e.toString() ->" + e.toString());
122 System.out.println("e.getMessage() ->" + e.getMessage());
123 setError(true);
124 }
125 exit(method);
126 return CnA;
127 }
128
129 private List<String> getChallengeQnAasList() {
130 List<String> CnAList = null;
131 String method = "";
132 try {
133 method = Thread.currentThread().getStackTrace()[1].getMethodName();
134 enter(method);
135 AuthenticatedSelfService service = getAuthenticatedSelfService();
136 String[] CnA;
137 CnA = service.getSystemChallengeQuestions();
138 CnAList = getSArrayToList(CnA);
139
140 } catch (Exception e) {
141 e.printStackTrace();
142 System.out.println("e.toString() ->" + e.toString());
143 System.out.println("e.getMessage() ->" + e.getMessage());
144 setError(true);
145 }
146 exit(method);
147 return CnAList;
148 }
149
150
151 private void setOIMClient(String oimURL) {
152 String method =
153 Thread.currentThread().getStackTrace()[1].getMethodName();
154 enter(method);
155 try {
156 Hashtable env = new Hashtable();
157 env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
158 OIMClient.WLS_CONTEXT_FACTORY);
159 env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, oimURL);
160 client = new OIMClient(env);
161 } catch (Exception e) {
162 e.printStackTrace();
163 System.out.println("e.toString() ->" + e.toString());
164 System.out.println("e.getMessage() ->" + e.getMessage());
165 setError(true);
166 }
167 exit(method);
168
169 }
170
171 private void login(String user, String password) {
172 String method =
173 Thread.currentThread().getStackTrace()[1].getMethodName();
174 enter(method);
175 try {
176 System.out.println("Before Login");
177 client.login(user, password.toCharArray());
178 System.out.println("After Login");
179 } catch (Exception e) {
180 e.printStackTrace();
181 System.out.println("e.toString() ->" + e.toString());
182 System.out.println("e.getMessage() ->" + e.getMessage());
183 setError(true);
184 }
185 exit(method);
186 }
187
188 void logout() {
189 String method =
190 Thread.currentThread().getStackTrace()[1].getMethodName();
191 enter(method);
192 try {
193 if (client != null)
194 client.logout();
195 } catch (Exception e) {
196 e.printStackTrace();
197 System.out.println("e.toString() ->" + e.toString());
198 System.out.println("e.getMessage() ->" + e.getMessage());
199 }
200 exit(method);
201 }
202
203 boolean resetPassword(String username, Map<String, Object> quesAnsMap,
204 String password) {
205 String method =
206 Thread.currentThread().getStackTrace()[1].getMethodName();
207 enter(method);
208 boolean flag = false;
209 try {
210 flag =
211 getUnauthenticatedSelfService().resetPassword(username, quesAnsMap,
212 password.toCharArray());
213 } catch (Exception e) {
214 e.printStackTrace();
215 System.out.println("e.toString() ->" + e.toString());
216 System.out.println("e.getMessage() ->" + e.getMessage());
217 setError(true);
218 }
219 exit(method);
220
221 return flag;
222
223 }
224
225 boolean setChallengeQnAValues(Map<String, Object> quesAnsMap) {
226 String method =
227 Thread.currentThread().getStackTrace()[1].getMethodName();
228 enter(method);
229 boolean flag = false;
230 try {
231 getAuthenticatedSelfService().setChallengeValues(quesAnsMap);
232 flag = true;
233 } catch (Exception e) {
234 e.printStackTrace();
235 System.out.println("e.toString() ->" + e.toString());
236 System.out.println("e.getMessage() ->" + e.getMessage());
237 setError(true);
238 }
239 exit(method);
240
241 return flag;
242
243 }
244
245 boolean changePassword(String oldPwd, String newPwd, String confirmPwd) {
246 String method =
247 Thread.currentThread().getStackTrace()[1].getMethodName();
248 enter(method);
249 boolean flag = false;
250 try {
251 getAuthenticatedSelfService().changePassword(oldPwd.toCharArray(),
252 newPwd.toCharArray(),
253 confirmPwd.toCharArray());
254 flag = true;
255 } catch (Exception e) {
256 e.printStackTrace();
257 System.out.println("e.toString() ->" + e.toString());
258 System.out.println("e.getMessage() ->" + e.getMessage());
259 setError(true);
260 }
261 exit(method);
262 return flag;
263 }
264
265 boolean setChallengeValues(Map<String, Object> quesAnsMap) {
266 String method =
267 Thread.currentThread().getStackTrace()[1].getMethodName();
268 enter(method);
269 boolean flag = false;
270 try {
271 getAuthenticatedSelfService().setChallengeValues(quesAnsMap);
272 flag = true;
273 } catch (Exception e) {
274 e.printStackTrace();
275 System.out.println("e.toString() ->" + e.toString());
276 System.out.println("e.getMessage() ->" + e.getMessage());
277 setError(true);
278 }
279 exit(method);
280 return flag;
281 }
282
283
284 public void setError(boolean error) {
285 this.error = error;
286 }
287
288 public boolean isError() {
289 return error;
290 }
291 }
292
ChallengeQnABean
1 package view.resources.backing;
2
3 import javax.faces.model.SelectItem;
4
5 import static view.resources.backing.PropertyLoader.admin;
6 import static view.resources.backing.PropertyLoader.password;
7
8 public class ChallengeQnABean {
9 public ChallengeQnABean() {
10 super();
11 }
12
13 private SelectItem[] selectItems;
14 // private String quesValue1;
15 // private String quesValue2;
16 // private String quesValue3;
17 //
18 // private String ansValue1;
19 // private String ansValue2;
20 // private String ansValue3;
21 private String className = this.getClass().getSimpleName();
22
23 private void enter(String method) {
24 System.out.println("Entering " + method + " of class " + className);
25 }
26
27 private void exit(String method) {
28 System.out.println("Exiting " + method + " of class " + className);
29 }
30
31
32 private String[] loadQnA() {
33 String method =
34 Thread.currentThread().getStackTrace()[1].getMethodName();
35 enter(method);
36 boolean flag = false;
37 String[] cNa = null;
38 try {
39 OIMOperator oim = new OIMOperator(admin, password);
40 cNa = oim.getChallengeQnA();
41 oim.logout();
42 } catch (Exception e) {
43 e.printStackTrace();
44 System.out.println("e.toString() ->" + e.toString());
45 System.out.println("e.getMessage() ->" + e.getMessage());
46 }
47 exit(method);
48 return cNa;
49 }
50
51
52 public SelectItem[] getSelectItems() {
53 String[] cNa = loadQnA();
54 if (selectItems == null) {
55 selectItems = new SelectItem[cNa.length];
56 for (int i = 0; i < cNa.length; i++) {
57 selectItems[i] = new SelectItem(cNa[i], cNa[i], null, false);
58 }
59 }
60
61 return selectItems;
62 }
63
64 }
Backing Bean for Change Password Bean after the Identity has been verified.
1 package view.resources.backing;
2
3 import java.util.Date;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import javax.faces.application.FacesMessage;
9 import javax.faces.component.UIComponent;
10 import javax.faces.component.UISelectItems;
11 import javax.faces.context.ExternalContext;
12 import javax.faces.context.FacesContext;
13 import javax.faces.validator.ValidatorException;
14
15 import javax.servlet.http.HttpServletResponse;
16
17 import javax.servlet.http.HttpSession;
18
19 import model.UpdateDb;
20
21 import oracle.adf.share.ADFContext;
22 import oracle.adf.view.rich.component.rich.RichDocument;
23 import oracle.adf.view.rich.component.rich.RichForm;
24 import oracle.adf.view.rich.component.rich.input.RichInputListOfValues;
25 import oracle.adf.view.rich.component.rich.input.RichInputText;
26 import oracle.adf.view.rich.component.rich.input.RichSelectItem;
27 import oracle.adf.view.rich.component.rich.input.RichSelectOneChoice;
28 import oracle.adf.view.rich.component.rich.layout.RichPanelFormLayout;
29 import oracle.adf.view.rich.component.rich.layout.RichPanelGroupLayout;
30 import oracle.adf.view.rich.component.rich.layout.RichPanelHeader;
31 import oracle.adf.view.rich.component.rich.layout.RichPanelLabelAndMessage;
32 import oracle.adf.view.rich.component.rich.nav.RichCommandButton;
33 import oracle.adf.view.rich.component.rich.output.RichOutputLabel;
34 import oracle.adf.view.rich.component.rich.output.RichSeparator;
35
36 import oracle.iam.identity.usermgmt.api.UserManager;
37 import oracle.iam.identity.usermgmt.vo.User;
38 import oracle.iam.identity.usermgmt.vo.UserManagerResult;
39
40 import org.apache.myfaces.trinidad.component.UIXGroup;
41
42 import static view.resources.backing.PropertyLoader.admin;
43 import static view.resources.backing.PropertyLoader.password;
44 import static view.resources.backing.PropertyLoader.oimLogin;
45
46
47 public class ChangePassword {
48 private RichForm f1;
49 private RichDocument d1;
50 private RichInputText it1;
51 private UIXGroup g1;
52 private RichInputText it2;
53 private RichInputText it3;
54 private RichSeparator s1;
55 private RichOutputLabel ol1;
56 private RichInputListOfValues ilov1;
57 private RichSelectOneChoice soc1;
58 private RichSelectItem si1;
59 private List challengeQnA;
60 private RichSelectOneChoice soc2;
61 private UISelectItems si2;
62 private RichSelectOneChoice soc3;
63 private UISelectItems si3;
64 private RichCommandButton cb1;
65 private RichCommandButton cb2;
66 private RichInputText it5;
67 private RichInputText it6;
68 private RichInputText it7;
69 private String className = this.getClass().getSimpleName();
70 private RichPanelFormLayout pfl1;
71 private RichPanelLabelAndMessage plam1;
72 private RichPanelFormLayout pfl2;
73 private UIXGroup g2;
74
75 private RichPanelLabelAndMessage plam2;
76 private UIXGroup g3;
77
78 private RichPanelGroupLayout pgl4;
79 // private UIXGroup g1;
80 private RichPanelHeader ph1;
81 private RichPanelLabelAndMessage plam3;
82 private RichInputText it4;
83 private RichInputText it8;
84 private RichInputText it9;
85 private UIXGroup g4;
86 private RichPanelLabelAndMessage plam4;
87 private RichPanelGroupLayout pgl1;
88 private RichSelectOneChoice soc4;
89 private UISelectItems si4;
90 private RichInputText it10;
91 private RichPanelGroupLayout pgl2;
92 private RichSelectOneChoice soc5;
93 private UISelectItems si5;
94 private RichInputText it11;
95 private RichPanelGroupLayout pgl3;
96 private RichSelectOneChoice soc6;
97 private UISelectItems si6;
98 private RichInputText it12;
99 private UIXGroup g5;
100 private RichPanelGroupLayout pgl5;
101 private RichCommandButton cb3;
102 private RichCommandButton cb4;
103 private RichPanelHeader ph2;
104 // private RichPanelFormLayout pfl2;
105 private RichPanelFormLayout pfl3;
106 // private RichGoImageLink gil1;
107
108 public void setF1(RichForm f1) {
109 this.f1 = f1;
110 }
111
112 public RichForm getF1() {
113 return f1;
114 }
115
116 public void setD1(RichDocument d1) {
117 this.d1 = d1;
118 }
119
120 public RichDocument getD1() {
121 return d1;
122 }
123
124 public void setIt1(RichInputText it1) {
125 this.it1 = it1;
126 }
127
128 public RichInputText getIt1() {
129 return it1;
130 }
131
132 public void setG1(UIXGroup g1) {
133 this.g1 = g1;
134 }
135
136 public UIXGroup getG1() {
137 return g1;
138 }
139
140 public void setIt2(RichInputText it2) {
141 this.it2 = it2;
142 }
143
144 public RichInputText getIt2() {
145 return it2;
146 }
147
148 public void setIt3(RichInputText it3) {
149 this.it3 = it3;
150 }
151
152 public RichInputText getIt3() {
153 return it3;
154 }
155
156 public void setS1(RichSeparator s1) {
157 this.s1 = s1;
158 }
159
160 public RichSeparator getS1() {
161 return s1;
162 }
163
164 public void setOl1(RichOutputLabel ol1) {
165 this.ol1 = ol1;
166 }
167
168 public RichOutputLabel getOl1() {
169 return ol1;
170 }
171
172 public void setIlov1(RichInputListOfValues ilov1) {
173 this.ilov1 = ilov1;
174 }
175
176 public RichInputListOfValues getIlov1() {
177 return ilov1;
178 }
179
180 public void setSoc1(RichSelectOneChoice soc1) {
181 this.soc1 = soc1;
182 }
183
184 public RichSelectOneChoice getSoc1() {
185 return soc1;
186 }
187
188 public void setSi1(RichSelectItem si1) {
189 this.si1 = si1;
190 }
191
192 public RichSelectItem getSi1() {
193 return si1;
194 }
195
196 public void setChallengeQnA(List challengeQnA) {
197 this.challengeQnA = challengeQnA;
198 }
199
200 public List getChallengeQnA() {
201 OIMOperator oim = new OIMOperator(admin, password);
202 return oim.getChallengeAnswersAsList();
203 // return challengeQnA;
204 }
205
206 public void setSoc2(RichSelectOneChoice soc2) {
207 this.soc2 = soc2;
208 }
209
210 public RichSelectOneChoice getSoc2() {
211 return soc2;
212 }
213
214 public void setSi2(UISelectItems si2) {
215 this.si2 = si2;
216 }
217
218 public UISelectItems getSi2() {
219 return si2;
220 }
221
222 public void setSoc3(RichSelectOneChoice soc3) {
223 this.soc3 = soc3;
224 }
225
226 public RichSelectOneChoice getSoc3() {
227 return soc3;
228 }
229
230 public void setSi3(UISelectItems si3) {
231 this.si3 = si3;
232 }
233
234 public UISelectItems getSi3() {
235 return si3;
236 }
237
238 public void setCb1(RichCommandButton cb1) {
239 this.cb1 = cb1;
240 }
241
242 public RichCommandButton getCb1() {
243 return cb1;
244 }
245
246 public void setCb2(RichCommandButton cb2) {
247 this.cb2 = cb2;
248 }
249
250 public RichCommandButton getCb2() {
251 return cb2;
252 }
253
254 private void enter(String method) {
255 System.out.println("Entering " + method + " of class " + className);
256 }
257
258 private void exit(String method) {
259 System.out.println("Exiting " + method + " of class " + className);
260 }
261
262 private String getFromSession(String attr) {
263 String method =
264 Thread.currentThread().getStackTrace()[1].getMethodName();
265 enter(method);
266 String value = "";
267 try {
268 ADFContext adfCtx = ADFContext.getCurrent();
269 Map session = adfCtx.getSessionScope();
270 value = (String)session.get(attr);
271 System.out.println("retrived from session -> " + value);
272 } catch (Exception e) {
273 e.printStackTrace();
274 }
275 exit(method);
276 return value;
277 }
278
279 public String cb1_action() {
280 String response = "false";
281 String method =
282 Thread.currentThread().getStackTrace()[1].getMethodName();
283 enter(method);
284 try {
285 String oimUserName = getFromSession("username");
286 System.out.println("oimUserName ->" + oimUserName);
287 String mail = getFromSession("email");
288 System.out.println("mail ->" + mail);
289 String oldPassword = it1.getValue().toString();
290 System.out.println("oldPassword ->" + oldPassword);
291 String newPassword = it2.getValue().toString();
292 System.out.println("newPassword ->" + newPassword);
293
294 //Update the user in DB first and then proceed
295 UpdateDb updateDB = new UpdateDb();
296
297 String dbResult = updateDB.updateClaimTable(oimUserName, mail);
298 System.out.println("dbResult -> " + dbResult);
299
300 if (dbResult.equalsIgnoreCase("CLAIMED")) {
301 String q1 = soc1.getValue().toString();
302 System.out.println("q1 ->" + q1);
303 String q2 = soc2.getValue().toString();
304 System.out.println("q2 ->" + q2);
305 String q3 = soc3.getValue().toString();
306 System.out.println("q3 ->" + q3);
307
308 Object a1 = it5.getValue();
309 System.out.println("a1 ->" + a1);
310 Object a2 = it6.getValue();
311 System.out.println("a2 ->" + a2);
312 Object a3 = it7.getValue();
313 System.out.println("a3 ->" + a3);
314 System.out.println("enable the user first so that he can login");
315 boolean isEnabledNow =
316 enableUser(oimUserName); //Enable the user first
317 System.out.println(" isEnabledNow-> Modifed the flow -> " +
318 isEnabledNow);
319
320 OIMOperator useroim =
321 new OIMOperator(oimUserName, oldPassword);
322 Map<String, Object> quesAnsMap = new HashMap<String, Object>();
323 quesAnsMap.put(q1, a1);
324 quesAnsMap.put(q2, a2);
325 quesAnsMap.put(q3, a3);
326
327 if (isEnabledNow) {
328 boolean chgPass, chgQnA = false;
329 chgPass =
330 useroim.changePassword(oldPassword, newPassword, newPassword);
331 System.out.println("chgPass -> " + chgPass);
332 if (chgPass) {
333 chgQnA = useroim.setChallengeValues(quesAnsMap);
334 System.out.println("chgQnA -> " + chgQnA);
335 boolean isErrorInOIM = useroim.isError();
336 System.out.println(" isErrorInOIM -> " + isErrorInOIM);
337 }
338 if (chgPass && chgQnA) {
339 System.out.println(" Both Password Changed as well as Challenge QnA set-> ");
340 response = "true";
341 }
342 }
343 boolean isUserOimError = useroim.isError();
344 if (isUserOimError) {
345 disableUser(oimUserName);
346 }
347 useroim.logout();
348 // boolean isEndDateSet = setEndDate(oimUserName);
349 // System.out.println("isEndDateSet -> " + isEndDateSet);
350
351 FacesContext ctx = FacesContext.getCurrentInstance();
352 System.out.println("ctx ->" + ctx);
353 ExternalContext ectx = ctx.getExternalContext();
354 System.out.println("ectx ->" + ectx);
355
356 HttpServletResponse hresponse;
357 hresponse = (HttpServletResponse)ectx.getResponse();
358 HttpSession session = (HttpSession)ectx.getSession(false);
359 session.invalidate();
360 hresponse.sendRedirect(oimLogin);
361 ctx.responseComplete();
362 System.out.println("Exiting cb1_action () Aug 08->");
363 } else {
364 response = dbResult;
365 }
366 System.out.println("Exiting cb1_action () Aug 08->");
367
368
369 } catch (Exception e) {
370 e.printStackTrace();
371 }
372 exit(method);
373 return response;
374 }
375
376
377 private boolean setEndDate(String oimUserName) {
378 String method =
379 Thread.currentThread().getStackTrace()[1].getMethodName();
380 enter(method);
381 boolean isEndSet = false;
382
383 try {
384 OIMOperator systemoim = new OIMOperator(admin, password);
385 UserManager usersvc = systemoim.getUserManager();
386 User user = usersvc.getDetails(oimUserName, null, true);
387 user.setEndDate(null);
388 UserManagerResult umr = usersvc.modify(user);
389 String status = umr.getStatus();
390 if (status.equalsIgnoreCase("COMPLETED")) {
391 System.out.println("endDate set successfully");
392 isEndSet = true;
393 } else {
394 System.out.println("endDate not set -> ");
395 }
396
397 systemoim.logout();
398 } catch (Exception e) {
399 System.out.println("e.getMessage() ->" + e.getMessage());
400 e.printStackTrace();
401 }
402 exit(method);
403 return isEndSet;
404 }
405
406 private boolean disableUser(String uid) {
407 String method =
408 Thread.currentThread().getStackTrace()[1].getMethodName();
409 enter(method);
410 boolean flag = false;
411 try {
412 OIMOperator oim = new OIMOperator(admin, password);
413 UserManagerResult umr = null;
414 UserManager usersvc = oim.getUserManager();
415 User user = usersvc.getDetails(uid, null, true);
416 if (user.getUserDisabled().equalsIgnoreCase("0")) {
417 umr = usersvc.disable(uid, true);
418 }
419 String status = "";
420 if (umr != null)
421 status = umr.getStatus();
422 System.out.println("status ->" + status);
423 if (status.equalsIgnoreCase("COMPLETED")) {
424 flag = true;
425 }
426 oim.logout();
427 } catch (Exception e) {
428 e.printStackTrace();
429 System.out.println("e.toString() ->" + e.toString());
430 System.out.println("e.getMessage() ->" + e.getMessage());
431 }
432 exit(method);
433 return flag;
434 }
435
436 private boolean enableUser(String uid) {
437 String method =
438 Thread.currentThread().getStackTrace()[1].getMethodName();
439 enter(method);
440 boolean flag = false;
441 try {
442 OIMOperator oim = new OIMOperator(admin, password);
443 UserManagerResult umr = null;
444 UserManager usersvc = oim.getUserManager();
445 User user = usersvc.getDetails(uid, null, true);
446 if (user.getUserDisabled().equalsIgnoreCase("1")) {
447 umr = usersvc.enable(uid, true);
448 }
449 String status = "";
450 if (umr != null)
451 status = umr.getStatus();
452 System.out.println("status ->" + status);
453 if (status.equalsIgnoreCase("COMPLETED")) {
454 flag = true;
455 }
456 oim.logout();
457 } catch (Exception e) {
458 e.printStackTrace();
459 System.out.println("e.toString() ->" + e.toString());
460 System.out.println("e.getMessage() ->" + e.getMessage());
461 }
462 exit(method);
463 return flag;
464 }
465
466 public String cb2_action() {
467 // Add event code here...
468 return null;
469 }
470
471
472 public void setIt5(RichInputText it5) {
473 this.it5 = it5;
474 }
475
476 public RichInputText getIt5() {
477 return it5;
478 }
479
480 public void setIt6(RichInputText it6) {
481 this.it6 = it6;
482 }
483
484 public RichInputText getIt6() {
485 return it6;
486 }
487
488 public void setIt7(RichInputText it7) {
489 this.it7 = it7;
490 }
491
492 public RichInputText getIt7() {
493 return it7;
494 }
495
496 public void it3_validator(FacesContext facesContext,
497 UIComponent uIComponent, Object object) {
498
499 String rit3 = (String)object;
500 System.out.println("rit3 ->" + rit3);
501 RichInputText rit2 = getIt2();
502 String rit2_s = (String)rit2.getValue();
503 System.out.println(" rit2_s ->" + rit2_s);
504 if (!(rit3.equalsIgnoreCase(rit2_s))) {
505 throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
506 "New Password and Confirm New Password do not match.",
507 null));
508 }
509 }
510
511 public void it7_validator(FacesContext facesContext,
512 UIComponent uIComponent, Object object) {
513 String rit7 = (String)object;
514 System.out.println("rit7 ->" + rit7);
515
516 RichInputText rit5 = getIt5();
517 String rit5_s = (String)rit5.getValue();
518 System.out.println(" rit5_s ->" + rit5_s);
519
520 RichInputText rit6 = getIt6();
521 String rit6_s = (String)rit6.getValue();
522 System.out.println(" rit6_s ->" + rit6_s);
523
524 boolean a = rit7.equalsIgnoreCase(rit5_s);
525 boolean b = rit7.equalsIgnoreCase(rit6_s);
526 boolean c = rit5_s.equalsIgnoreCase(rit6_s);
527 if (a || b || c) {
528 throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
529 "All Answers should be uniquely set.",
530 null));
531 }
532 }
533
534
535 public void setPfl1(RichPanelFormLayout pfl1) {
536 this.pfl1 = pfl1;
537 }
538
539 public RichPanelFormLayout getPfl1() {
540 return pfl1;
541 }
542
543 public void setPlam1(RichPanelLabelAndMessage plam1) {
544 this.plam1 = plam1;
545 }
546
547 public RichPanelLabelAndMessage getPlam1() {
548 return plam1;
549 }
550
551 public void setPfl2(RichPanelFormLayout pfl2) {
552 this.pfl2 = pfl2;
553 }
554
555 public RichPanelFormLayout getPfl2() {
556 return pfl2;
557 }
558
559 public void setG2(UIXGroup g2) {
560 this.g2 = g2;
561 }
562
563 public UIXGroup getG2() {
564 return g2;
565 }
566
567
568 public void setPlam2(RichPanelLabelAndMessage plam2) {
569 this.plam2 = plam2;
570 }
571
572 public RichPanelLabelAndMessage getPlam2() {
573 return plam2;
574 }
575
576 public void setG3(UIXGroup g3) {
577 this.g3 = g3;
578 }
579
580 public UIXGroup getG3() {
581 return g3;
582 }
583
584
585 public void setPgl4(RichPanelGroupLayout pgl4) {
586 this.pgl4 = pgl4;
587 }
588
589 public RichPanelGroupLayout getPgl4() {
590 return pgl4;
591 }
592
593 public void soc3_validator(FacesContext facesContext,
594 UIComponent uIComponent, Object object) {
595
596 String soc3 = (String)object;
597 System.out.println(" soc3 -> " + soc3);
598
599 RichSelectOneChoice soc1 = getSoc1();
600 String soc1_s = (String)soc1.getValue();
601 System.out.println(" soc1_s ->" + soc1_s);
602
603 RichSelectOneChoice soc2 = getSoc2();
604 String soc2_s = (String)soc2.getValue();
605 System.out.println(" soc2_s ->" + soc2_s);
606
607
608 boolean a = soc3.equalsIgnoreCase(soc1_s);
609 boolean b = soc3.equalsIgnoreCase(soc2_s);
610 boolean c = soc1_s.equalsIgnoreCase(soc2_s);
611 if (a || b || c) {
612 throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,
613 "All Questions should be uniquely set.",
614 null));
615 }
616
617
618 }
619
620 // public void setG1(UIXGroup g1) {
621 // this.g1 = g1;
622 // }
623 //
624 // public UIXGroup getG1() {
625 // return g1;
626 // }
627
628 public void setPh1(RichPanelHeader ph1) {
629 this.ph1 = ph1;
630 }
631
632 public RichPanelHeader getPh1() {
633 return ph1;
634 }
635
636 public void setPlam3(RichPanelLabelAndMessage plam3) {
637 this.plam3 = plam3;
638 }
639
640 public RichPanelLabelAndMessage getPlam3() {
641 return plam3;
642 }
643
644 public void setIt4(RichInputText it4) {
645 this.it4 = it4;
646 }
647
648 public RichInputText getIt4() {
649 return it4;
650 }
651
652 public void setIt8(RichInputText it8) {
653 this.it8 = it8;
654 }
655
656 public RichInputText getIt8() {
657 return it8;
658 }
659
660 public void setIt9(RichInputText it9) {
661 this.it9 = it9;
662 }
663
664 public RichInputText getIt9() {
665 return it9;
666 }
667
668 public void setG4(UIXGroup g4) {
669 this.g4 = g4;
670 }
671
672 public UIXGroup getG4() {
673 return g4;
674 }
675
676 public void setPlam4(RichPanelLabelAndMessage plam4) {
677 this.plam4 = plam4;
678 }
679
680 public RichPanelLabelAndMessage getPlam4() {
681 return plam4;
682 }
683
684 public void setPgl1(RichPanelGroupLayout pgl1) {
685 this.pgl1 = pgl1;
686 }
687
688 public RichPanelGroupLayout getPgl1() {
689 return pgl1;
690 }
691
692 public void setSoc4(RichSelectOneChoice soc4) {
693 this.soc4 = soc4;
694 }
695
696 public RichSelectOneChoice getSoc4() {
697 return soc4;
698 }
699
700 public void setSi4(UISelectItems si4) {
701 this.si4 = si4;
702 }
703
704 public UISelectItems getSi4() {
705 return si4;
706 }
707
708 public void setIt10(RichInputText it10) {
709 this.it10 = it10;
710 }
711
712 public RichInputText getIt10() {
713 return it10;
714 }
715
716 public void setPgl2(RichPanelGroupLayout pgl2) {
717 this.pgl2 = pgl2;
718 }
719
720 public RichPanelGroupLayout getPgl2() {
721 return pgl2;
722 }
723
724 public void setSoc5(RichSelectOneChoice soc5) {
725 this.soc5 = soc5;
726 }
727
728 public RichSelectOneChoice getSoc5() {
729 return soc5;
730 }
731
732 public void setSi5(UISelectItems si5) {
733 this.si5 = si5;
734 }
735
736 public UISelectItems getSi5() {
737 return si5;
738 }
739
740 public void setIt11(RichInputText it11) {
741 this.it11 = it11;
742 }
743
744 public RichInputText getIt11() {
745 return it11;
746 }
747
748 public void setPgl3(RichPanelGroupLayout pgl3) {
749 this.pgl3 = pgl3;
750 }
751
752 public RichPanelGroupLayout getPgl3() {
753 return pgl3;
754 }
755
756 public void setSoc6(RichSelectOneChoice soc6) {
757 this.soc6 = soc6;
758 }
759
760 public RichSelectOneChoice getSoc6() {
761 return soc6;
762 }
763
764 public void setSi6(UISelectItems si6) {
765 this.si6 = si6;
766 }
767
768 public UISelectItems getSi6() {
769 return si6;
770 }
771
772 public void setIt12(RichInputText it12) {
773 this.it12 = it12;
774 }
775
776 public RichInputText getIt12() {
777 return it12;
778 }
779
780 public void setG5(UIXGroup g5) {
781 this.g5 = g5;
782 }
783
784 public UIXGroup getG5() {
785 return g5;
786 }
787
788 public void setPgl5(RichPanelGroupLayout pgl5) {
789 this.pgl5 = pgl5;
790 }
791
792 public RichPanelGroupLayout getPgl5() {
793 return pgl5;
794 }
795
796 public void setCb3(RichCommandButton cb3) {
797 this.cb3 = cb3;
798 }
799
800 public RichCommandButton getCb3() {
801 return cb3;
802 }
803
804 public void setCb4(RichCommandButton cb4) {
805 this.cb4 = cb4;
806 }
807
808 public RichCommandButton getCb4() {
809 return cb4;
810 }
811
812 public void setPh2(RichPanelHeader ph2) {
813 this.ph2 = ph2;
814 }
815
816 public RichPanelHeader getPh2() {
817 return ph2;
818 }
819
820
821 public void setPfl3(RichPanelFormLayout pfl3) {
822 this.pfl3 = pfl3;
823 }
824
825 public RichPanelFormLayout getPfl3() {
826 return pfl3;
827 }
828 }
829
Change Password.jspx View File
1 <?xml version='1.0' encoding='windows-1252'?>
2 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
3 xmlns:f="http://java.sun.com/jsf/core"
4 xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
5 xmlns:c="http://java.sun.com/jsp/jstl/core">
6 <c:set var="viewcontrollerBundle"
7 value="#{adfBundle['view.resources.ViewControllerBundle']}"/>
8 <jsp:directive.page contentType="text/html;charset=windows-1252"/>
9 <f:view>
10 <af:document id="d1" title="Change Password Page"
11 binding="#{backingBeanScope.backing_ChangePassword.d1}">
12 <af:form id="f1" binding="#{backingBeanScope.backing_ChangePassword.f1}">
13 <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx"
14 id="pt1">
15 <f:facet name="center">
16
17 <af:panelFormLayout binding="#{backingBeanScope.backing_ChangePassword.pfl1}"
18 id="pfl1" rows="99" maxColumns="1">
19
20 <af:panelLabelAndMessage label="Password Information"
21 binding="#{backingBeanScope.backing_ChangePassword.plam1}"
22 id="plam1"/>
23 <af:inputText label="Password "
24 binding="#{backingBeanScope.backing_ChangePassword.it1}"
25 id="it1" showRequired="true" secret="true"
26 required="true"/>
27 <af:inputText label="New Password "
28 binding="#{backingBeanScope.backing_ChangePassword.it2}"
29 id="it2" secret="true" showRequired="true"
30 required="true"/>
31 <af:inputText label="Confirm New Password"
32 binding="#{backingBeanScope.backing_ChangePassword.it3}"
33 id="it3" secret="true" showRequired="true"
34 validator="#{backingBeanScope.backing_ChangePassword.it3_validator}"
35 required="true"/>
36
37 <af:panelLabelAndMessage label="Challenge Question and Answers"
38 binding="#{backingBeanScope.backing_ChangePassword.plam2}"
39 id="plam2"/>
40
41 <af:panelGroupLayout id="pgl1" layout="horizontal">
42 <af:selectOneChoice label="Question 1 : "
43 binding="#{backingBeanScope.backing_ChangePassword.soc1}"
44 id="soc1" showRequired="true"
45 required="true">
46 <f:selectItems value="#{challengeQnABean.selectItems}"
47 id="si1"/>
48 </af:selectOneChoice>
49 <af:inputText label="Answer 1 : "
50 binding="#{backingBeanScope.backing_ChangePassword.it5}"
51 id="it5" showRequired="true" required="true"/>
52 </af:panelGroupLayout>
53 <af:panelGroupLayout id="pgl2" layout="horizontal">
54 <af:selectOneChoice label="Question 2 : "
55 binding="#{backingBeanScope.backing_ChangePassword.soc2}"
56 id="soc2" showRequired="true"
57 required="true">
58 <f:selectItems value="#{challengeQnABean.selectItems}"
59 id="si2"/>
60 </af:selectOneChoice>
61 <af:inputText label="Answer 2 : "
62 binding="#{backingBeanScope.backing_ChangePassword.it6}"
63 id="it6" showRequired="true" required="true"/>
64 </af:panelGroupLayout>
65 <af:panelGroupLayout id="pgl3" layout="horizontal">
66 <af:selectOneChoice label="Question 3 : "
67 binding="#{backingBeanScope.backing_ChangePassword.soc3}"
68 id="soc3" showRequired="true"
69 validator="#{backingBeanScope.backing_ChangePassword.soc3_validator}"
70 required="true">
71 <f:selectItems value="#{challengeQnABean.selectItems}"
72 id="si3"/>
73 </af:selectOneChoice>
74 <af:inputText label="Answer 3 : "
75 binding="#{backingBeanScope.backing_ChangePassword.it7}"
76 id="it7" showRequired="true"
77 validator="#{backingBeanScope.backing_ChangePassword.it7_validator}"
78 required="true"/>
79 </af:panelGroupLayout>
80
81 <af:panelGroupLayout binding="#{backingBeanScope.backing_ChangePassword.pgl4}"
82 id="pgl4">
83 <af:commandButton text="Submit"
84 binding="#{backingBeanScope.backing_ChangePassword.cb1}"
85 id="cb1"
86 action="#{backingBeanScope.backing_ChangePassword.cb1_action}"/>
87 <af:commandButton text="Cancel"
88 binding="#{backingBeanScope.backing_ChangePassword.cb2}"
89 id="cb2"
90 action="#{backingBeanScope.backing_ChangePassword.cb2_action}"/>
91 </af:panelGroupLayout>
92
93 </af:panelFormLayout>
94 </f:facet>
95 <f:facet name="header"/>
96 <f:facet name="end"/>
97 <f:facet name="start"/>
98 <f:facet name="branding"/>
99 <f:facet name="copyright"/>
100 <f:facet name="status"/>
101 </af:pageTemplate>
102 </af:form>
103 </af:document>
104 </f:view>
105 <!--oracle-jdev-comment:auto-binding-backing-bean-name:backing_ChangePassword-->
106 </jsp:root>
107
Account Verification Page view which asks for DOB, Zip Code, UID and PIN.
1 <?xml version='1.0' encoding='windows-1252'?>
2 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
3 xmlns:f="http://java.sun.com/jsf/core"
4 xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
5 xmlns:c="http://java.sun.com/jsp/jstl/core">
6 <c:set var="viewcontrollerBundle"
7 value="#{adfBundle['view.resources.ViewControllerBundle']}"/>
8 <jsp:directive.page contentType="text/html;charset=windows-1252"/>
9 <f:view>
10 <af:document id="d1" binding="#{backingBeanScope.backing_view1.d1}"
11 title="#{viewcontrollerBundle.ACCOUNT_CLAIM_VALIDATION}">
12 <af:form id="f1" binding="#{backingBeanScope.backing_view1.f1}">
13 <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx"
14 id="pt1">
15 <f:facet name="center">
16
17
18
19
20 <af:panelFormLayout binding="#{backingBeanScope.backing_view1.pfl1}"
21 id="pfl1" rows="10">
22 <af:panelLabelAndMessage label="#{viewcontrollerBundle.ACCOUNT_INFORMATION}"
23 binding="#{backingBeanScope.backing_view1.plam1}"
24 id="plam1"/>
25
26 <af:inputText label="#{viewcontrollerBundle.UID}"
27 binding="#{backingBeanScope.backing_view1.it1}"
28 id="it1" showRequired="true" required="true"
29 validator="#{backingBeanScope.backing_view1.it1_validator}"/>
30 <af:inputText label="#{viewcontrollerBundle.PIN}"
31 binding="#{backingBeanScope.backing_view1.it2}"
32 id="it2" secret="true" showRequired="true"
33 required="true"
34 validator="#{backingBeanScope.backing_view1.it2_validator}"/>
35 <af:inputText
36 binding="#{backingBeanScope.backing_view1.it3}"
37 id="it3" showRequired="true" required="true"
38 validator="#{backingBeanScope.backing_view1.it3_validator}"
39 label="#{viewcontrollerBundle.ZIP_CODE}"/>
40 <af:inputDate
41 binding="#{backingBeanScope.backing_view1.id2}"
42 id="id2" showRequired="true" required="true"
43 label="#{viewcontrollerBundle.DATE_OF_BIRTH}"
44 validator="#{backingBeanScope.backing_view1.id2_validator2}"/>
45
46 <af:panelGroupLayout binding="#{backingBeanScope.backing_view1.pgl1}"
47 id="pgl1">
48 <af:commandButton text="#{viewcontrollerBundle.NEXT}"
49 binding="#{backingBeanScope.backing_view1.cb1}"
50 id="cb1"
51 action="#{backingBeanScope.backing_view1.cb1_action}"/>
52 <af:commandButton text="#{viewcontrollerBundle.CANCEL}"
53 binding="#{backingBeanScope.backing_view1.cb2}"
54 id="cb2" action="cancel"/>
55
56 </af:panelGroupLayout>
57
58 </af:panelFormLayout>
59
60 </f:facet>
61 <f:facet name="header"/>
62 <f:facet name="end"/>
63 <f:facet name="start"/>
64 <f:facet name="branding"/>
65 <f:facet name="copyright"/>
66 <f:facet name="status"/>
67 </af:pageTemplate>
68 </af:form>
69 </af:document>
70 </f:view>
71 <!--oracle-jdev-comment:auto-binding-backing-bean-name:backing_view1-->
72 </jsp:root>
73
Successfully account claim view message page
1 <?xml version='1.0' encoding='UTF-8'?>
2 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
3 xmlns:f="http://java.sun.com/jsf/core"
4 xmlns:h="http://java.sun.com/jsf/html"
5 xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
6 <jsp:directive.page contentType="text/html;charset=UTF-8"/>
7 <f:view>
8 <af:document id="d1">
9 <af:form id="f1">
10 <af:pageTemplate viewId="/oracle/templates/threeColumnTemplate.jspx"
11 id="pt1">
12 <f:facet name="center">
13 <af:outputText value="Account Successfully Claimed" id="ot1"/>
14 </f:facet>
15 <f:facet name="header"/>
16 <f:facet name="end"/>
17 <f:facet name="start"/>
18 <f:facet name="branding"/>
19 <f:facet name="copyright"/>
20 <f:facet name="status"/>
21 </af:pageTemplate>
22 </af:form>
23 </af:document>
24 </f:view>
25 </jsp:root>
26
View 2 : Account is aleady Claimed
View 3 : Failure to Validate Account Information
View 4 : No User was Found
View 5 : Multiple Users were Found.