package fr.openwide.core.jpa.security.access.expression;
import org.springframework.security.access.expression.SecurityExpressionRoot;
import org.springframework.security.access.expression.method.MethodSecurityExpressionOperations;
import org.springframework.security.core.Authentication;
import fr.openwide.core.jpa.security.service.ICorePermissionEvaluator;
public class CoreMethodSecurityExpressionRoot extends SecurityExpressionRoot implements
MethodSecurityExpressionOperations {
private ICorePermissionEvaluator corePermissionEvaluator;
private Object filterObject;
private Object returnObject;
private Object target;
public CoreMethodSecurityExpressionRoot(Authentication a) {
super(a);
}
@Override
public void setFilterObject(Object filterObject) {
this.filterObject = filterObject;
}
@Override
public Object getFilterObject() {
return filterObject;
}
@Override
public void setReturnObject(Object returnObject) {
this.returnObject = returnObject;
}
@Override
public Object getReturnObject() {
return returnObject;
}
/**
* Sets the "this" property for use in expressions. Typically this will be
* the "this" property of the {@code JoinPoint} representing the method
* invocation which is being protected.
*
* @param target
* the target object on which the method in is being invoked.
*/
void setThis(Object target) {
this.target = target;
}
@Override
public Object getThis() {
return target;
}
public final boolean hasPermission(Object permission) {
return corePermissionEvaluator.hasPermission(getAuthentication(), permission);
}
public void setCorePermissionEvaluator(ICorePermissionEvaluator permissionEvaluator) {
setPermissionEvaluator(permissionEvaluator);
this.corePermissionEvaluator = permissionEvaluator;
}
}