package security;
import java.util.Iterator;
import java.util.List;
import play.Logger;
import play.Logger.ALogger;
import play.mvc.Http.Context;
import be.objectify.deadbolt.java.DeadboltHandler;
import be.objectify.deadbolt.java.DynamicResourceHandler;
import be.objectify.deadbolt.core.models.Permission;
import be.objectify.deadbolt.core.models.Subject;
public class CustomResourceHandler implements DynamicResourceHandler {
private static ALogger log = Logger.of(CustomResourceHandler.class);
public boolean checkPermission(String permission, DeadboltHandler handler,
Context ctx) {
if (log.isDebugEnabled())
log.debug("checkPermission() <-");
if (log.isDebugEnabled())
log.debug("permission : " + permission);
boolean permissionOk = false;
Subject roleHolder = handler.getSubject(ctx);
if (roleHolder != null) {
List<? extends Permission> permissions = roleHolder
.getPermissions();
for (Iterator<? extends Permission> iterator = permissions
.iterator(); !permissionOk && iterator.hasNext();) {
Permission perm = iterator.next();
permissionOk = perm.getValue().contains(permission);
}
}
return permissionOk;
}
public boolean isAllowed(String name, String meta, DeadboltHandler handler,
Context ctx) {
if (log.isDebugEnabled())
log.debug("isAllowed() <-");
if (log.isDebugEnabled())
log.debug("name : " + name);
if (log.isDebugEnabled())
log.debug("meta : " + meta);
boolean permissionOk = false;
Subject roleHolder = handler.getSubject(ctx);
if (log.isDebugEnabled())
log.debug("roleHolder : " + roleHolder);
return permissionOk;
}
}