package br.edu.uniritter.liquid.democracy.interceptor; import br.com.caelum.vraptor.InterceptionException; import br.com.caelum.vraptor.Intercepts; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.core.InterceptorStack; import br.com.caelum.vraptor.interceptor.Interceptor; import br.com.caelum.vraptor.resource.ResourceMethod; import br.edu.uniritter.liquid.democracy.annotation.Public; import br.edu.uniritter.liquid.democracy.controller.SecurityController; import br.edu.uniritter.liquid.democracy.session.UserInfo; @Intercepts public class AuthorizationInterceptor implements Interceptor { private final UserInfo info; private final Result result; public AuthorizationInterceptor(UserInfo info, Result result) { this.info = info; this.result = result; } public boolean accepts(ResourceMethod method) { return !method.containsAnnotation(Public.class); } public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException { if (info.isLogged()) { stack.next(method, resourceInstance); } else { result.redirectTo(SecurityController.class).login(); } } }