X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Fwidgets%2Fauth%2FCmsLogin.java;h=db0ae6296c5bbf9e68655721f26e416108ee183c;hb=453b971b83adf490d9f9ef2c0c30d5e48b5d8f94;hp=fc9b7768995e71387084f4f9fef5526effcd7dfb;hpb=8fe4f3585ddeb9f3d044aa77de07b4fdc0151a3b;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java index fc9b77689..db0ae6296 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/widgets/auth/CmsLogin.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.util.List; import java.util.Locale; +import javax.security.auth.Subject; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.LanguageCallback; @@ -57,6 +58,9 @@ public class CmsLogin implements CmsStyles, CallbackHandler { private final CmsView cmsView; + // optional subject to be set explicitly + private Subject subject = null; + public CmsLogin(CmsView cmsView) { this.cmsView = cmsView; defaultLocale = Activator.getNodeState().getDefaultLocale(); @@ -187,7 +191,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } /** - * To be overridden in order to provide custome login button and other links. + * To be overridden in order to provide custom login button and other links. */ protected void extendsCredentialsBlock(Composite credentialsBlock, Locale selectedLocale, SelectionListener loginSelectionListener) { @@ -242,6 +246,7 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } protected boolean login() { + // TODO use CmsVie in order to retrieve subject? // Subject subject = cmsView.getLoginContext().getSubject(); // LoginContext loginContext = cmsView.getLoginContext(); try { @@ -249,7 +254,11 @@ public class CmsLogin implements CmsStyles, CallbackHandler { // LOGIN // // loginContext.logout(); - LoginContext loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, this); + LoginContext loginContext; + if (subject == null) + loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, this); + else + loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_USER, subject, this); loginContext.login(); cmsView.authChange(loginContext); return true; @@ -304,4 +313,8 @@ public class CmsLogin implements CmsStyles, CallbackHandler { } } + public void setSubject(Subject subject) { + this.subject = subject; + } + }