package security;
import models.User;
import play.Logger;
import play.Logger.ALogger;
import play.libs.F;
import play.libs.F.Promise;
import play.mvc.Http;
import play.mvc.Http.Context;
import play.mvc.SimpleResult;
import views.html.errors.accessFailed;
import be.objectify.deadbolt.core.models.Subject;
import be.objectify.deadbolt.java.AbstractDeadboltHandler;
import be.objectify.deadbolt.java.DynamicResourceHandler;
import controllers.HttpUtils;
public class CustomDeadboltHandler extends AbstractDeadboltHandler {
private static ALogger log = Logger.of(CustomDeadboltHandler.class);
public DynamicResourceHandler getDynamicResourceHandler(Context ctx) {
if (log.isDebugEnabled())
log.debug("getDynamicResourceHandler() <-");
return new CustomResourceHandler();
}
public Subject getSubject(Context ctx) {
if (log.isDebugEnabled())
log.debug("getSubject() <-");
User user = HttpUtils.loginUser(ctx);
if (log.isDebugEnabled())
log.debug("user : " + user);
return user;
}
@Override
public Promise<SimpleResult> onAuthFailure(Context ctx, String content) {
Http.Context.current.set(ctx);
// you can return any result from here - forbidden, etc
return F.Promise.promise(new F.Function0<SimpleResult>() {
@Override
public SimpleResult apply() throws Throwable {
return ok(accessFailed.render());
}
});
}
@Override
public Promise<SimpleResult> beforeAuthCheck(Context ctx) {
return F.Promise.pure(null);
}
}