X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fhandlers%2FCloseWorkbench.java;fp=swt%2Forg.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fhandlers%2FCloseWorkbench.java;h=c2ae4bff7c8b32cb7562c4a28607216276205182;hb=7b242851c0094d13cbaca5b68261ad92c873a59f;hp=0000000000000000000000000000000000000000;hpb=dbb84b4ec2d313ec0724d035c32f482ac57974c5;p=lgpl%2Fargeo-commons.git diff --git a/swt/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/CloseWorkbench.java b/swt/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/CloseWorkbench.java new file mode 100644 index 000000000..c2ae4bff7 --- /dev/null +++ b/swt/org.argeo.cms.e4/src/org/argeo/cms/e4/handlers/CloseWorkbench.java @@ -0,0 +1,28 @@ +package org.argeo.cms.e4.handlers; + +import java.security.AccessController; + +import javax.security.auth.Subject; + +import org.argeo.cms.auth.CurrentUser; +import org.argeo.cms.swt.CmsException; +import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.e4.ui.workbench.IWorkbench; + +public class CloseWorkbench { + @Execute + public void execute(IWorkbench workbench) { + logout(); + workbench.close(); + } + + protected void logout() { + Subject subject = Subject.getSubject(AccessController.getContext()); + try { + CurrentUser.logoutCmsSession(subject); + } catch (Exception e) { + throw new CmsException("Cannot log out", e); + } + } + +}