]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/plugins/org.argeo.security.ui.rap/src/main/java/org/argeo/security/ui/rap/SecureActionBarAdvisor.java
First working remote node
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.rap / src / main / java / org / argeo / security / ui / rap / SecureActionBarAdvisor.java
index 98a9c64dba2d596f239496465901c986d0e50b61..f47eb82d4f20c33827c696c324f4de35b3582119 100644 (file)
@@ -1,6 +1,12 @@
 package org.argeo.security.ui.rap;
 
+import java.security.AccessController;
+
+import javax.security.auth.Subject;
+
+import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.ICoolBarManager;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IToolBarManager;
@@ -16,7 +22,10 @@ import org.eclipse.ui.application.ActionBarAdvisor;
 import org.eclipse.ui.application.IActionBarConfigurer;
 
 public class SecureActionBarAdvisor extends ActionBarAdvisor {
-       private IWorkbenchAction exitAction;
+//     private final static Log log = LogFactory
+//                     .getLog(SecureActionBarAdvisor.class);
+
+       private IAction logoutAction;
        private IWorkbenchAction openPerspectiveDialogAction;
        private IWorkbenchAction showViewMenuAction;
        private IWorkbenchAction preferences;
@@ -24,11 +33,8 @@ public class SecureActionBarAdvisor extends ActionBarAdvisor {
        private IWorkbenchAction saveAllAction;
        private IWorkbenchAction closeAllAction;
 
-       // private final Boolean isRcp;
-
        public SecureActionBarAdvisor(IActionBarConfigurer configurer, Boolean isRcp) {
                super(configurer);
-               // this.isRcp = isRcp;
        }
 
        protected void makeActions(IWorkbenchWindow window) {
@@ -40,10 +46,12 @@ public class SecureActionBarAdvisor extends ActionBarAdvisor {
                showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(window);
                register(showViewMenuAction);
 
-               exitAction = ActionFactory.QUIT.create(window);
-               register(exitAction);
+               // logout
+               logoutAction = ActionFactory.QUIT.create(window);
+               //logoutAction = createLogoutAction();
+               register(logoutAction);
 
-               // Save semantiocs
+               // Save semantics
                saveAction = ActionFactory.SAVE.create(window);
                register(saveAction);
                saveAllAction = ActionFactory.SAVE_ALL.create(window);
@@ -53,6 +61,45 @@ public class SecureActionBarAdvisor extends ActionBarAdvisor {
 
        }
 
+       protected IAction createLogoutAction() {
+               Subject subject = Subject.getSubject(AccessController.getContext());
+               final String username = subject.getPrincipals().iterator().next()
+                               .getName();
+
+               IAction logoutAction = new Action() {
+                       public String getId() {
+                               return SecureRapActivator.ID + ".logoutAction";
+                       }
+
+                       public String getText() {
+                               return "Logout " + username;
+                       }
+
+                       public void run() {
+                               // try {
+                               // Subject subject = SecureRapActivator.getLoginContext()
+                               // .getSubject();
+                               // String subjectStr = subject.toString();
+                               // subject.getPrincipals().clear();
+                               // SecureRapActivator.getLoginContext().logout();
+                               // log.info(subjectStr + " logged out");
+                               // } catch (LoginException e) {
+                               // log.error("Error when logging out", e);
+                               // }
+//                             SecureEntryPoint.logout(username);
+//                             PlatformUI.getWorkbench().close();
+                               // try {
+                               // RWT.getRequest().getSession().setMaxInactiveInterval(1);
+                               // } catch (Exception e) {
+                               // if (log.isTraceEnabled())
+                               // log.trace("Error when invalidating session", e);
+                               // }
+                       }
+
+               };
+               return logoutAction;
+       }
+
        protected void fillMenuBar(IMenuManager menuBar) {
                MenuManager fileMenu = new MenuManager("&File",
                                IWorkbenchActionConstants.M_FILE);
@@ -73,7 +120,7 @@ public class SecureActionBarAdvisor extends ActionBarAdvisor {
                fileMenu.add(closeAllAction);
                fileMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
                fileMenu.add(new Separator());
-               fileMenu.add(exitAction);
+               fileMenu.add(logoutAction);
 
                // Edit
                editMenu.add(preferences);