olá pessoal
tenho a classe abaixo:
package mapeamento.controller;
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;
@Intercepts
public class TransactionInterceptor implements Interceptor
{
private final UsuarioLogado usuario;
private final Result result;
public boolean accepts(ResourceMethod method) {
return !usuario.isLogado() && method.containsAnnotation(Restrito.class);
}
public TransactionInterceptor(UsuarioLogado usuario, Result result)
{
this.usuario = usuario;
this.result = result;
}
public void intercept(InterceptorStack stack, ResourceMethod method,
Object instance) throws InterceptionException {
this.result.redirectTo(UsuarioController.class).loginform();
}
}
interface
package mapeamento.controller;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Restrito {
String[] value();
}
anotação:
@get
@path("/....")
@Restrito({"administrador","gerente","usuario"})
public void ....
gostaria de saber como eu faço para na classe TransactionInterceptor e no metodo accepts eu conseguir pegar os valores do vetor String[] value() ({"administrador","gerente","usuario"}) e verificar se o usuário tem privilegio de acesso a aquele método.
para ficar algo parecido com
public boolean accepts(ResourceMethod method) {
return !usuario.isLogado() && (usuario.nivel=="administrador" || usuario.nivel=="gerente" || usuario.nivel=="usuario") && method.containsAnnotation(Restrito.class);
}
alguém tem uma dica?
vlw.