+ setTabList(new Control[] { c });
+ c.setTabList(new Control[] { username, password });
+ c.setFocus();
+ }
+
+ protected void login() {
+ CmsView cmsSession = (CmsView) getDisplay().getData(CmsView.KEY);
+ Subject subject = cmsSession.getSubject();
+ try {
+ //
+ // LOGIN
+ //
+ new LoginContext(LOGIN_CONTEXT_ANONYMOUS, subject).logout();
+ LoginContext loginContext = new LoginContext(LOGIN_CONTEXT_USER,
+ subject, this);
+ loginContext.login();
+
+ // save context in session
+ final HttpSession httpSession = RWT.getRequest().getSession();
+ Subject.doAs(subject, new PrivilegedAction<Void>() {
+
+ @Override
+ public Void run() {
+ httpSession.setAttribute(ACCESS_CONTROL_CONTEXT,
+ AccessController.getContext());
+ return null;
+ }
+ });
+ } catch (LoginException e1) {
+ try {
+ new LoginContext(LOGIN_CONTEXT_ANONYMOUS, subject).login();
+ } catch (LoginException e) {
+ throw new CmsException("Cannot authenticate anonymous", e1);
+ }
+ throw new CmsException("Cannot authenticate", e1);
+ }
+ close();
+ dispose();
+ cmsSession.authChange();