diff --git a/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java index 4717a4c969..416bba35a0 100644 --- a/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java +++ b/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java @@ -269,6 +269,20 @@ public class GlobalMethodSecurityBeanDefinitionParserTests { assertEquals("bob", result[0]); } + // SEC-1392 + @Test + public void customPermissionEvaluatorIsSupported() throws Exception { + setContext( + "" + + " " + + "" + + "" + + " " + + "" + + "" + + AUTH_PROVIDER_XML); + } + @Test public void runAsManagerIsSetCorrectly() throws Exception { StaticApplicationContext parent = new StaticApplicationContext(); diff --git a/config/src/test/java/org/springframework/security/config/method/TestPermissionEvaluator.java b/config/src/test/java/org/springframework/security/config/method/TestPermissionEvaluator.java new file mode 100644 index 0000000000..541d926a59 --- /dev/null +++ b/config/src/test/java/org/springframework/security/config/method/TestPermissionEvaluator.java @@ -0,0 +1,19 @@ +package org.springframework.security.config.method; + +import java.io.Serializable; + +import org.springframework.security.access.PermissionEvaluator; +import org.springframework.security.core.Authentication; + +public class TestPermissionEvaluator implements PermissionEvaluator { + + public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) { + return false; + } + + public boolean hasPermission(Authentication authentication, Serializable targetId, String targetType, + Object permission) { + return false; + } + +} diff --git a/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java b/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java index 50e4d6ed45..28d6044bc0 100644 --- a/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java +++ b/core/src/main/java/org/springframework/security/access/PermissionEvaluator.java @@ -2,6 +2,7 @@ package org.springframework.security.access; import java.io.Serializable; +import org.springframework.aop.framework.AopInfrastructureBean; import org.springframework.security.core.Authentication; /** @@ -12,7 +13,7 @@ import org.springframework.security.core.Authentication; * @author Luke Taylor * @since 3.0 */ -public interface PermissionEvaluator { +public interface PermissionEvaluator extends AopInfrastructureBean { /** * * @param authentication represents the user in question. Should not be null. diff --git a/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java b/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java index 588e43c2e7..a58f45fbc5 100644 --- a/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java +++ b/core/src/main/java/org/springframework/security/access/expression/method/MethodSecurityExpressionHandler.java @@ -1,6 +1,7 @@ package org.springframework.security.access.expression.method; import org.aopalliance.intercept.MethodInvocation; +import org.springframework.aop.framework.AopInfrastructureBean; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.ExpressionParser; @@ -13,7 +14,7 @@ import org.springframework.security.core.Authentication; * @author Luke Taylor * @since 3.0 */ -public interface MethodSecurityExpressionHandler { +public interface MethodSecurityExpressionHandler extends AopInfrastructureBean { /** * @return an expression parser for the expressions used by the implementation. */