SEC-1563: Move PermissionEvaluator and related methods to SecurityExpressionRoot

This commit is contained in:
Luke Taylor 2010-09-07 22:32:34 +01:00
parent ca44ebd3cc
commit 8bf1b8420a
2 changed files with 20 additions and 18 deletions

View File

@ -1,10 +1,12 @@
package org.springframework.security.access.expression; package org.springframework.security.access.expression;
import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.security.access.PermissionEvaluator;
import org.springframework.security.access.hierarchicalroles.RoleHierarchy; import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
import org.springframework.security.authentication.AuthenticationTrustResolver; import org.springframework.security.authentication.AuthenticationTrustResolver;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
@ -30,6 +32,12 @@ public abstract class SecurityExpressionRoot {
/** Allows "denyAll" expression */ /** Allows "denyAll" expression */
public final boolean denyAll = false; public final boolean denyAll = false;
private PermissionEvaluator permissionEvaluator;
public final String read = "read";
public final String write = "write";
public final String create = "create";
public final String delete = "delete";
public final String admin = "administration";
public SecurityExpressionRoot(Authentication a) { public SecurityExpressionRoot(Authentication a) {
if (a == null) { if (a == null) {
@ -116,4 +124,16 @@ public abstract class SecurityExpressionRoot {
return roles; return roles;
} }
public boolean hasPermission(Object target, Object permission) {
return permissionEvaluator.hasPermission(authentication, target, permission);
}
public boolean hasPermission(Object targetId, String targetType, Object permission) {
return permissionEvaluator.hasPermission(authentication, (Serializable)targetId, targetType, permission);
}
public void setPermissionEvaluator(PermissionEvaluator permissionEvaluator) {
this.permissionEvaluator = permissionEvaluator;
}
} }

View File

@ -14,27 +14,13 @@ import org.springframework.security.core.Authentication;
* @since 3.0 * @since 3.0
*/ */
class MethodSecurityExpressionRoot extends SecurityExpressionRoot { class MethodSecurityExpressionRoot extends SecurityExpressionRoot {
private PermissionEvaluator permissionEvaluator;
private Object filterObject; private Object filterObject;
private Object returnObject; private Object returnObject;
public final String read = "read";
public final String write = "write";
public final String create = "create";
public final String delete = "delete";
public final String admin = "administration";
MethodSecurityExpressionRoot(Authentication a) { MethodSecurityExpressionRoot(Authentication a) {
super(a); super(a);
} }
public boolean hasPermission(Object target, Object permission) {
return permissionEvaluator.hasPermission(authentication, target, permission);
}
public boolean hasPermission(Object targetId, String targetType, Object permission) {
return permissionEvaluator.hasPermission(authentication, (Serializable)targetId, targetType, permission);
}
public void setFilterObject(Object filterObject) { public void setFilterObject(Object filterObject) {
this.filterObject = filterObject; this.filterObject = filterObject;
} }
@ -51,8 +37,4 @@ class MethodSecurityExpressionRoot extends SecurityExpressionRoot {
return returnObject; return returnObject;
} }
public void setPermissionEvaluator(PermissionEvaluator permissionEvaluator) {
this.permissionEvaluator = permissionEvaluator;
}
} }