package controllers; import static play.libs.F.Promise.pure; import models.CacheableUser; import play.Play; import play.mvc.SimpleResult; import play.libs.F.Promise; import play.mvc.Action; import play.mvc.Http.Context; import providers.CacheableUserProvider; import service.GuiceInjectionPlugin; import com.feth.play.module.pa.PlayAuthenticate; public class SubjectPresentAction extends Action.Simple { @Override public Promise<SimpleResult> call(final Context ctx) throws Throwable { if (getUser(ctx) == null) { PlayAuthenticate.storeOriginalUrl(ctx); return pure(redirect(PlayAuthenticate.getResolver().login())); } return delegate.call(ctx); } protected CacheableUserProvider getSubjectHandler() { return GuiceInjectionPlugin.getInjector(Play.application()) .getInstance(CacheableUserProvider.class); } protected CacheableUser getUser(Context ctx) { return getSubjectHandler().getUser(ctx.session()); } }