X-Git-Url: https://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=118878eb12c8e142da7648cae3880754b34798b2;hp=88836f4669f29e205520e8bc62ba218bc0bc1813;hpb=5266ec50ddbf3247a5033d98a1dbceec6673a5b8;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 88836f466..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,13 +1,9 @@ package org.argeo.security.ui.rap; -import java.security.Principal; +import java.security.AccessController; import javax.security.auth.Subject; -import javax.security.auth.login.LoginException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.ArgeoException; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IAction; @@ -17,19 +13,17 @@ import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.ToolBarManager; -import org.eclipse.rwt.RWT; import org.eclipse.swt.SWT; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionFactory; import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; public class SecureActionBarAdvisor extends ActionBarAdvisor { - private final static Log log = LogFactory - .getLog(SecureActionBarAdvisor.class); +// private final static Log log = LogFactory +// .getLog(SecureActionBarAdvisor.class); private IAction logoutAction; private IWorkbenchAction openPerspectiveDialogAction; @@ -52,55 +46,58 @@ public class SecureActionBarAdvisor extends ActionBarAdvisor { showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(window); register(showViewMenuAction); - // logoutAction = ActionFactory.QUIT.create(window); + // logout + logoutAction = ActionFactory.QUIT.create(window); + //logoutAction = createLogoutAction(); + register(logoutAction); + + // Save semantics + saveAction = ActionFactory.SAVE.create(window); + register(saveAction); + saveAllAction = ActionFactory.SAVE_ALL.create(window); + register(saveAllAction); + closeAllAction = ActionFactory.CLOSE_ALL.create(window); + register(closeAllAction); + + } - Subject subject = null; - try { - subject = SecureRapActivator.getLoginContext().getSubject(); - } catch (LoginException e1) { - throw new ArgeoException("Cannot retrieve subject", e1); - } - final Principal principal = subject.getPrincipals().iterator().next(); + protected IAction createLogoutAction() { + Subject subject = Subject.getSubject(AccessController.getContext()); + final String username = subject.getPrincipals().iterator().next() + .getName(); - logoutAction = new Action() { + IAction logoutAction = new Action() { public String getId() { return SecureRapActivator.ID + ".logoutAction"; } public String getText() { - return "Logout " + principal.getName(); + return "Logout " + username; } public void run() { - try { - Subject subject = SecureRapActivator.getLoginContext() - .getSubject(); - String subjectStr = subject.toString(); - SecureRapActivator.getLoginContext().logout(); - log.info(subjectStr + " logged out"); - } catch (LoginException e) { - log.error("Error when logging out", e); - } - try { - RWT.getRequest().getSession().setMaxInactiveInterval(1); - PlatformUI.getWorkbench().close(); - } catch (Exception e) { - if (log.isTraceEnabled()) - log.trace("Error when invalidating session", e); - } + // 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); + // } } }; - register(logoutAction); - - // Save semantics - saveAction = ActionFactory.SAVE.create(window); - register(saveAction); - saveAllAction = ActionFactory.SAVE_ALL.create(window); - register(saveAllAction); - closeAllAction = ActionFactory.CLOSE_ALL.create(window); - register(closeAllAction); - + return logoutAction; } protected void fillMenuBar(IMenuManager menuBar) {