Seguinte galera, estou pesquisando formas de implementar um interceptor que bloqueia o acesso ao recursos através das rotas.
A idéia é construir uma tela com todas as rotas da aplicação e o administrador habilita ou não o acesso do usuário as rotas.
Porém não sei como recuperar as rotas à partir da requisição (se é que é possível), algo parecido com isso
public class AuthorizationInterceptor implements Interceptor {
private final RequestInfo request;
private final UserInfo user;
public AuthorizationInterceptor(UserInfo user, RequestInfo request) {
this.request = request;
this.user = user;
}
@Override
public boolean accepts(ResourceMethod method) {
return true;
}
@Override
public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException {
for (Route route : getRoutesFrom(request.getRequestedUri())){
if(user.canAccess(route))
stack.next(method, resourceInstance);
}
}
}
Acho que talvez assim funcione
for(Route route : router.allRoutes()){
/* uma possível rota para a requisição */
if(route.canHandle(request.getRequestedUri()))
}
}
alguma forma elegante de resolver isso?