From d69e93406c6a6a7ae2635a4a5294fec40c2b62cc Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Mon, 14 Oct 2019 16:21:14 +0200 Subject: [PATCH] use static method to check if subject is anonymous --- .../java/sonia/scm/security/Authentications.java | 15 +++++++++++++++ .../api/rest/AuthorizationExceptionMapper.java | 5 ++--- .../scm/api/v2/resources/IndexDtoGenerator.java | 4 ++-- .../sonia/scm/group/DefaultGroupCollector.java | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/security/Authentications.java diff --git a/scm-core/src/main/java/sonia/scm/security/Authentications.java b/scm-core/src/main/java/sonia/scm/security/Authentications.java new file mode 100644 index 0000000000..dbd5fe6167 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/security/Authentications.java @@ -0,0 +1,15 @@ +package sonia.scm.security; + +import org.apache.shiro.SecurityUtils; +import sonia.scm.SCMContext; + +public class Authentications { + + public static boolean isAuthenticatedSubjectAnonymous() { + return SecurityUtils.getSubject().getPrincipal().equals(SCMContext.USER_ANONYMOUS); + } + + public static boolean isSubjectAnonymous(String principal) { + return principal.equals(SCMContext.USER_ANONYMOUS); + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/AuthorizationExceptionMapper.java b/scm-webapp/src/main/java/sonia/scm/api/rest/AuthorizationExceptionMapper.java index 2f00639a9b..6bd9884d23 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/AuthorizationExceptionMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/AuthorizationExceptionMapper.java @@ -33,11 +33,10 @@ package sonia.scm.api.rest; //~--- non-JDK imports -------------------------------------------------------- -import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.AuthorizationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sonia.scm.SCMContext; +import sonia.scm.security.Authentications; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -69,6 +68,6 @@ public class AuthorizationExceptionMapper } private Response.Status getStatus() { - return SecurityUtils.getSubject().getPrincipal().equals(SCMContext.USER_ANONYMOUS) ? Response.Status.UNAUTHORIZED : Response.Status.FORBIDDEN; + return Authentications.isAuthenticatedSubjectAnonymous() ? Response.Status.UNAUTHORIZED : Response.Status.FORBIDDEN; } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java index 0e8552b6de..6653bced14 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java @@ -6,12 +6,12 @@ import de.otto.edison.hal.Embedded; import de.otto.edison.hal.Link; import de.otto.edison.hal.Links; import org.apache.shiro.SecurityUtils; -import sonia.scm.SCMContext; import sonia.scm.SCMContextProvider; import sonia.scm.config.ConfigurationPermissions; import sonia.scm.config.ScmConfiguration; import sonia.scm.group.GroupPermissions; import sonia.scm.plugin.PluginPermissions; +import sonia.scm.security.Authentications; import sonia.scm.security.PermissionPermissions; import sonia.scm.user.UserPermissions; @@ -48,7 +48,7 @@ public class IndexDtoGenerator extends HalAppenderMapper { if (SecurityUtils.getSubject().isAuthenticated()) { builder.single(link("me", resourceLinks.me().self())); - if (SecurityUtils.getSubject().getPrincipal().equals(SCMContext.USER_ANONYMOUS)) { + if (Authentications.isAuthenticatedSubjectAnonymous()) { builder.single(link("login", resourceLinks.authentication().jsonLogin())); } else { builder.single(link("logout", resourceLinks.authentication().logout())); diff --git a/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupCollector.java b/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupCollector.java index d1acccb364..3aca4c4be6 100644 --- a/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupCollector.java +++ b/scm-webapp/src/main/java/sonia/scm/group/DefaultGroupCollector.java @@ -4,9 +4,9 @@ import com.cronutils.utils.VisibleForTesting; import com.google.common.collect.ImmutableSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sonia.scm.SCMContext; import sonia.scm.cache.Cache; import sonia.scm.cache.CacheManager; +import sonia.scm.security.Authentications; import javax.inject.Inject; import javax.inject.Singleton; @@ -39,7 +39,7 @@ public class DefaultGroupCollector implements GroupCollector { public Set collect(String principal) { ImmutableSet.Builder builder = ImmutableSet.builder(); - if (!principal.equals(SCMContext.USER_ANONYMOUS)) { + if (!Authentications.isSubjectAnonymous(principal)) { builder.add(AUTHENTICATED); }