Continue finalising security. Fix issues with login in web.
[lgpl/argeo-commons.git] / org.argeo.cms.ui.workbench.rap / src / org / argeo / security / ui / rap / RapWorkbenchLogin.java
index 7bf487a887d02369c14ba4bb935056cdbd1efb20..06fc62e2e41d9cd33c7700294bf9739fb57f1c9e 100644 (file)
@@ -30,13 +30,13 @@ public class RapWorkbenchLogin extends LoginEntryPoint {
 
        @Override
        public int createUI() {
-               JavaScriptExecutor jsExecutor = RWT.getClient().getService(
-                               JavaScriptExecutor.class);
+               JavaScriptExecutor jsExecutor = RWT.getClient().getService(JavaScriptExecutor.class);
                int returnCode;
                try {
                        returnCode = super.createUI();
                } finally {
                        // always reload
+                       // TODO optimise?
                        jsExecutor.execute("location.reload()");
                }
                return returnCode;
@@ -44,25 +44,22 @@ public class RapWorkbenchLogin extends LoginEntryPoint {
 
        @Override
        protected int postLogin() {
+               Subject subject = getLoginContext().getSubject();
                final Display display = Display.getCurrent();
-               Subject subject = getSubject();
                if (subject.getPrincipals(X500Principal.class).isEmpty()) {
-                       RWT.getClient().getService(JavaScriptExecutor.class)
-                                       .execute("location.reload()");
+                       RWT.getClient().getService(JavaScriptExecutor.class).execute("location.reload()");
                }
                //
                // RUN THE WORKBENCH
                //
                Integer returnCode = null;
                try {
-                       returnCode = Subject.doAs(getSubject(),
-                                       new PrivilegedAction<Integer>() {
-                                               public Integer run() {
-                                                       int result = createAndRunWorkbench(display,
-                                                                       CurrentUser.getUsername(getSubject()));
-                                                       return new Integer(result);
-                                               }
-                                       });
+                       returnCode = Subject.doAs(subject, new PrivilegedAction<Integer>() {
+                               public Integer run() {
+                                       int result = createAndRunWorkbench(display, CurrentUser.getUsername(subject));
+                                       return new Integer(result);
+                               }
+                       });
                        // explicit workbench closing
                        logout();
                } finally {
@@ -77,8 +74,8 @@ public class RapWorkbenchLogin extends LoginEntryPoint {
        }
 
        @Override
-       protected void extendsCredentialsBlock(Composite credentialsBlock,
-                       Locale selectedLocale, SelectionListener loginSelectionListener) {
+       protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale,
+                       SelectionListener loginSelectionListener) {
                Button loginButton = new Button(credentialsBlock, SWT.PUSH);
                loginButton.setText(CmsMsg.login.lead(selectedLocale));
                loginButton.setLayoutData(CmsUtils.fillWidth());