X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=security%2Fplugins%2Forg.argeo.security.ui.rap%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Frap%2FSecureActionBarAdvisor.java;h=f47eb82d4f20c33827c696c324f4de35b3582119;hb=2f1c0a952d1bbaafc243da2d5d4caa235f628777;hp=98a9c64dba2d596f239496465901c986d0e50b61;hpb=ba1f9e3787c089254d03ac067b2d363a809b2274;p=lgpl%2Fargeo-commons.git diff --git a/security/plugins/org.argeo.security.ui.rap/src/main/java/org/argeo/security/ui/rap/SecureActionBarAdvisor.java b/security/plugins/org.argeo.security.ui.rap/src/main/java/org/argeo/security/ui/rap/SecureActionBarAdvisor.java index 98a9c64db..f47eb82d4 100644 --- a/security/plugins/org.argeo.security.ui.rap/src/main/java/org/argeo/security/ui/rap/SecureActionBarAdvisor.java +++ b/security/plugins/org.argeo.security.ui.rap/src/main/java/org/argeo/security/ui/rap/SecureActionBarAdvisor.java @@ -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);