-
- boolean login(Subject subject) {
- // Subject subject = Subject.getSubject(AccessController.getContext());
- Display display = new Display();
- CmsView cmsView = new E4CmsView(subject);
- CmsLoginShell loginShell = new CmsLoginShell(cmsView);
- loginShell.setSubject(subject);
- try {
- // try pre-auth
- LoginContext loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject, loginShell);
- loginContext.login();
- } catch (LoginException e) {
- loginShell.createUi();
- loginShell.open();
-
- while (!loginShell.getShell().isDisposed()) {
- if (!display.readAndDispatch())
- display.sleep();
- }
- } finally {
- display.dispose();
- }
- if (CurrentUser.getUsername(subject) == null)
- return false;
- return true;
- }
-
- class E4CmsView implements CmsView {
- private LoginContext loginContext;
- private UxContext uxContext;
- private Subject subject;
-
- public E4CmsView(Subject subject) {
- this.subject = subject;
- uxContext = new SimpleUxContext();
- }
-
- @Override
- public UxContext getUxContext() {
- return uxContext;
- }
-
- @Override
- public void navigateTo(String state) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void authChange(LoginContext loginContext) {
- if (loginContext == null)
- throw new CmsException("Login context cannot be null");
- // logout previous login context
- // if (this.loginContext != null)
- // try {
- // this.loginContext.logout();
- // } catch (LoginException e1) {
- // System.err.println("Could not log out: " + e1);
- // }
- this.loginContext = loginContext;
- }
-
- @Override
- public void logout() {
- if (loginContext == null)
- throw new CmsException("Login context should not bet null");
- try {
- CurrentUser.logoutCmsSession(loginContext.getSubject());
- loginContext.logout();
- } catch (LoginException e) {
- throw new CmsException("Cannot log out", e);
- }
- }
-
- @Override
- public void exception(Throwable e) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public CmsImageManager getImageManager() {
- // TODO Auto-generated method stub
- return null;
- }
-
- protected Subject getSubject() {
- return subject;
- }
-
- @Override
- public boolean isAnonymous() {
- return CurrentUser.isAnonymous(getSubject());
- }
- }