X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=security%2Feclipse%2Fplugins%2Forg.argeo.security.ui.application%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Fapplication%2FAbstractSecureApplication.java;h=a0a2f922bbe31bc16384c087a80cf64c613582ff;hb=77eaf70d8b929dab68211d6a01f68eeb71a1dceb;hp=5073edf85b1ea6d2a96e1e5773108393a265202e;hpb=308001aedac299588da2c235c863645482a98c0f;p=lgpl%2Fargeo-commons.git diff --git a/security/eclipse/plugins/org.argeo.security.ui.application/src/main/java/org/argeo/security/ui/application/AbstractSecureApplication.java b/security/eclipse/plugins/org.argeo.security.ui.application/src/main/java/org/argeo/security/ui/application/AbstractSecureApplication.java index 5073edf85..a0a2f922b 100644 --- a/security/eclipse/plugins/org.argeo.security.ui.application/src/main/java/org/argeo/security/ui/application/AbstractSecureApplication.java +++ b/security/eclipse/plugins/org.argeo.security.ui.application/src/main/java/org/argeo/security/ui/application/AbstractSecureApplication.java @@ -6,23 +6,15 @@ import javax.security.auth.Subject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.argeo.security.equinox.CurrentUser; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.dialogs.ErrorSupportProvider; -import org.eclipse.jface.util.Policy; -import org.eclipse.jface.window.Window.IExceptionHandler; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.application.WorkbenchAdvisor; -import org.eclipse.ui.internal.statushandlers.StackTraceSupportArea; -import org.eclipse.ui.statushandlers.WorkbenchStatusDialogManager; public abstract class AbstractSecureApplication implements IApplication { private static final Log log = LogFactory @@ -30,6 +22,7 @@ public abstract class AbstractSecureApplication implements IApplication { protected abstract WorkbenchAdvisor createWorkbenchAdvisor(); + @SuppressWarnings("unchecked") public Object start(IApplicationContext context) throws Exception { Integer returnCode = null; @@ -40,12 +33,18 @@ public abstract class AbstractSecureApplication implements IApplication { try { String username = null; Exception loginException = null; + Subject subject = null; try { - username = CurrentUser.getUsername(); + SecureApplicationActivator.getLoginContext().login(); + subject = SecureApplicationActivator.getLoginContext() + .getSubject(); + + // username = CurrentUser.getUsername(); } catch (Exception e) { loginException = e; + e.printStackTrace(); } - if (username == null) { + if (subject == null) { IStatus status = new Status(IStatus.ERROR, "org.argeo.security.application", "Login is mandatory", loginException); @@ -54,11 +53,8 @@ public abstract class AbstractSecureApplication implements IApplication { } if (log.isDebugEnabled()) log.debug("Logged in as " + username); - returnCode = (Integer) Subject.doAs(CurrentUser.getSubject(), - getRunAction(display)); - if (log.isDebugEnabled()) - log.debug("secure action completed"); - CurrentUser.logout(); + returnCode = (Integer) Subject.doAs(subject, getRunAction(display)); + SecureApplicationActivator.getLoginContext().logout(); return processReturnCode(returnCode); } catch (Exception e) { // e.printStackTrace(); @@ -112,9 +108,9 @@ public abstract class AbstractSecureApplication implements IApplication { if (log.isDebugEnabled()) log.debug("workbench stopped"); - String username = CurrentUser.getUsername(); - if (log.isDebugEnabled()) - log.debug("workbench stopped, logged in as " + username); + // String username = CurrentUser.getUsername(); + // if (log.isDebugEnabled()) + // log.debug("workbench stopped, logged in as " + username); }