ec.gob.senescyt.sniese.commons.security.shiro.FiltroPermisos Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sniese-commons Show documentation
Show all versions of sniese-commons Show documentation
Librería que contiene clases de uso comun para sniese hechos en dropwizard
package ec.gob.senescyt.sniese.commons.security.shiro;
import ec.gob.senescyt.sniese.commons.security.InformacionAcceso;
import ec.gob.senescyt.sniese.commons.security.InformacionAccesoParser;
import ec.gob.senescyt.sniese.commons.security.PrincipalProvider;
import ec.gob.senescyt.sniese.commons.security.PrincipalProviderImpl;
import org.apache.shiro.web.filter.authz.AuthorizationFilter;
import org.apache.shiro.web.util.WebUtils;
import org.eclipse.jetty.servlets.CrossOriginFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class FiltroPermisos extends AuthorizationFilter {
private static final String PERMISOS_INSUFICIENTES = "Permisos insuficientes";
private static final String METODO_OPTIONS = "OPTIONS";
private static final String COMODIN = "*";
private final InformacionAccesoParser informacionAccesoParser;
private final PrincipalProvider principalProvider;
public FiltroPermisos() {
informacionAccesoParser = new InformacionAccesoParser();
principalProvider = new PrincipalProviderImpl();
}
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
InformacionAcceso informacionAcceso = informacionAccesoParser.analizar(mappedValue);
String metodo = WebUtils.toHttp(request).getMethod();
if (metodo.equals(METODO_OPTIONS)) {
return true;
}
String permisoRequerido = informacionAcceso.obtenerPermisosParaMetodo(metodo);
return COMODIN.equals(permisoRequerido) || principalProvider.obtenerUsuarioAutenticado().hasRole(permisoRequerido);
}
@Override
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws IOException {
HttpServletResponse respuesta = WebUtils.toHttp(response);
respuesta.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
respuesta.setHeader(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, COMODIN);
respuesta.setHeader(CrossOriginFilter.ACCESS_CONTROL_ALLOW_CREDENTIALS_HEADER, "true");
respuesta.getWriter().print(PERMISOS_INSUFICIENTES);
return false;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy