diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitPermissionFilter.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitPermissionFilter.java index 6842f24566..e10568b057 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitPermissionFilter.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitPermissionFilter.java @@ -41,7 +41,6 @@ import com.google.inject.Singleton; import sonia.scm.repository.RepositoryProvider; import sonia.scm.web.filter.ProviderPermissionFilter; -import sonia.scm.web.security.WebSecurityContext; //~--- JDK imports ------------------------------------------------------------ @@ -81,10 +80,9 @@ public class GitPermissionFilter extends ProviderPermissionFilter @Inject public GitPermissionFilter( ScmConfiguration configuration, - Provider securityContextProvider, RepositoryProvider repositoryProvider) { - super(configuration, securityContextProvider, repositoryProvider); + super(configuration, repositoryProvider); } //~--- get methods ---------------------------------------------------------- diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java index 119ea7fcff..8e2c8b558c 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgHookCallbackServlet.java @@ -39,6 +39,9 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,9 +54,9 @@ import sonia.scm.repository.RepositoryManager; import sonia.scm.repository.RepositoryNotFoundException; import sonia.scm.repository.RepositoryUtil; import sonia.scm.security.CipherUtil; +import sonia.scm.security.ScmAuthenticationToken; import sonia.scm.util.HttpUtil; import sonia.scm.util.Util; -import sonia.scm.web.security.WebSecurityContext; //~--- JDK imports ------------------------------------------------------------ @@ -120,16 +123,14 @@ public class HgHookCallbackServlet extends HttpServlet * @param securityContextProvider */ @Inject - public HgHookCallbackServlet( - RepositoryManager repositoryManager, HgRepositoryHandler handler, - HgHookManager hookManager, Provider contextProvider, - Provider securityContextProvider) + public HgHookCallbackServlet(RepositoryManager repositoryManager, + HgRepositoryHandler handler, HgHookManager hookManager, + Provider contextProvider) { this.repositoryManager = repositoryManager; this.handler = handler; this.hookManager = hookManager; this.contextProvider = contextProvider; - this.securityContextProvider = securityContextProvider; } //~--- methods -------------------------------------------------------------- @@ -146,7 +147,7 @@ public class HgHookCallbackServlet extends HttpServlet */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException + throws ServletException, IOException { String ping = request.getParameter(PARAM_PING); @@ -172,8 +173,8 @@ public class HgHookCallbackServlet extends HttpServlet */ @Override protected void doPost(HttpServletRequest request, - HttpServletResponse response) - throws ServletException, IOException + HttpServletResponse response) + throws ServletException, IOException { String strippedURI = HttpUtil.getStrippedURI(request); Matcher m = REGEX_URL.matcher(strippedURI); @@ -229,7 +230,7 @@ public class HgHookCallbackServlet extends HttpServlet * @param credentials */ private void authenticate(HttpServletRequest request, - HttpServletResponse response, String credentials) + HttpServletResponse response, String credentials) { try { @@ -241,10 +242,10 @@ public class HgHookCallbackServlet extends HttpServlet if (credentialsArray.length >= 2) { - WebSecurityContext context = securityContextProvider.get(); + Subject subject = SecurityUtils.getSubject(); - context.authenticate(request, response, credentialsArray[0], - credentialsArray[1]); + subject.login(new ScmAuthenticationToken(request, response, + credentialsArray[0], credentialsArray[1])); } } } @@ -266,8 +267,8 @@ public class HgHookCallbackServlet extends HttpServlet * @throws IOException */ private void fireHook(HttpServletResponse response, String repositoryName, - String node, RepositoryHookType type) - throws IOException + String node, RepositoryHookType type) + throws IOException { try { @@ -277,9 +278,8 @@ public class HgHookCallbackServlet extends HttpServlet } repositoryManager.fireHookEvent(HgRepositoryHandler.TYPE_NAME, - repositoryName, - new HgRepositoryHookEvent(handler, - repositoryName, node, type)); + repositoryName, + new HgRepositoryHookEvent(handler, repositoryName, node, type)); } catch (RepositoryNotFoundException ex) { @@ -310,9 +310,8 @@ public class HgHookCallbackServlet extends HttpServlet * @throws IOException */ private void hookCallback(HttpServletResponse response, - String repositoryName, String typeName, - String challenge, String node) - throws IOException + String repositoryName, String typeName, String challenge, String node) + throws IOException { if (hookManager.isAcceptAble(challenge)) { @@ -404,7 +403,4 @@ public class HgHookCallbackServlet extends HttpServlet /** Field description */ private RepositoryManager repositoryManager; - - /** Field description */ - private Provider securityContextProvider; } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java index 5df19d5042..73d20530ea 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/web/HgPermissionFilter.java @@ -36,17 +36,15 @@ package sonia.scm.web; //~--- non-JDK imports -------------------------------------------------------- import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; +import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.RepositoryProvider; import sonia.scm.web.filter.ProviderPermissionFilter; -import sonia.scm.web.security.WebSecurityContext; //~--- JDK imports ------------------------------------------------------------ import javax.servlet.http.HttpServletRequest; -import sonia.scm.config.ScmConfiguration; /** * @@ -61,15 +59,15 @@ public class HgPermissionFilter extends ProviderPermissionFilter * * * @param securityContextProvider + * + * @param configuration * @param repositoryProvider */ @Inject - public HgPermissionFilter( - ScmConfiguration configuration, - Provider securityContextProvider, - RepositoryProvider repositoryProvider) + public HgPermissionFilter(ScmConfiguration configuration, + RepositoryProvider repositoryProvider) { - super(configuration, securityContextProvider, repositoryProvider); + super(configuration, repositoryProvider); } //~--- get methods ---------------------------------------------------------- diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java index d5a8941552..164ccfd173 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/web/SvnPermissionFilter.java @@ -37,13 +37,11 @@ package sonia.scm.web; import com.google.common.collect.ImmutableSet; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; import sonia.scm.config.ScmConfiguration; import sonia.scm.repository.RepositoryProvider; import sonia.scm.web.filter.ProviderPermissionFilter; -import sonia.scm.web.security.WebSecurityContext; //~--- JDK imports ------------------------------------------------------------ @@ -79,12 +77,10 @@ public class SvnPermissionFilter extends ProviderPermissionFilter * @param repository */ @Inject - public SvnPermissionFilter( - ScmConfiguration configuration, - Provider securityContextProvider, - RepositoryProvider repository) + public SvnPermissionFilter(ScmConfiguration configuration, + RepositoryProvider repository) { - super(configuration, securityContextProvider, repository); + super(configuration, repository); } //~--- get methods ---------------------------------------------------------- diff --git a/scm-samples/scm-sample-hello/src/main/java/sample/hello/HelloResource.java b/scm-samples/scm-sample-hello/src/main/java/sample/hello/HelloResource.java index a83024f4bd..2064c7ffc0 100644 --- a/scm-samples/scm-sample-hello/src/main/java/sample/hello/HelloResource.java +++ b/scm-samples/scm-sample-hello/src/main/java/sample/hello/HelloResource.java @@ -35,10 +35,10 @@ package sample.hello; //~--- non-JDK imports -------------------------------------------------------- -import com.google.inject.Inject; -import com.google.inject.Provider; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; -import sonia.scm.security.SecurityContext; +import sonia.scm.user.User; //~--- JDK imports ------------------------------------------------------------ @@ -61,11 +61,18 @@ public class HelloResource * * @param securityContextProvider */ - @Inject - public HelloResource(Provider securityContextProvider) + public HelloResource() { - message = "Hello " - + securityContextProvider.get().getUser().getDisplayName(); + Subject subject = SecurityUtils.getSubject(); + String displayName = "Unknown"; + + if (subject.isAuthenticated()) + { + displayName = + subject.getPrincipals().oneByType(User.class).getDisplayName(); + } + + message = "Hello " + displayName; } //~--- get methods ----------------------------------------------------------