Commit f00ef75e by Percy Quispe

Agregar validaciones

parent 9a6a7e75
......@@ -2,14 +2,12 @@ package demojsoncrud.servlets;
import demojsoncrud.utilities.GeneralUtils;
import demojsoncrud.utilities.PostRequest;
import demojsoncrud.utilities.VistasExtras;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
......@@ -25,36 +23,50 @@ import org.json.JSONObject;
@WebFilter("/*")
public class RequestFilter implements Filter, ServletContextListener {
private final String BASE = "http://localhost:8080/proyecto-estandar/";
private final String BASE = "http://localhost:8080/proyecto-estandar/";//Modificar con la ruta de su proyecto
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
/**
* <p>
* BASE = Es la ruta del proyecto que se va implementar esta es la variable que se va a modificar en primera instancia.
* urlRequested = a la ruta para la verificación del token de la API REST.
* login = a la pantalla de inicio del sistema en este caso el login.
* js = a la ruta /nombre_de_proyecto/js esto sirve para darle acceso a todos los archivos que se encuentren en la carpeta js sin necesidad de validar el token
* css = a la ruta /nombre_de_proyecto/css esto sirve para darle acceso a todos los archivos que se encuentren en la carpeta css sin necesidad de validar el token
* postRequest = new PostRequest(urlRequested); urlRequested es la ruta que se va enviar para poder enviar una peticion post al servidor
* JSONObject valid = va capturar la respuesta de la petición post al servidor una respuesta importante es su status=true: su token fue verificado correctamente, status=false: su token fue rechazado y se le enviar una excepción UNAUTHORIZED
* </p>
* @param req recibe el parametro para poder asignar su valor a HttpServletResponse response para obtener los métodos básicos de un servlet
* @param res recibe el parametro para poder asignar su valor a HttpServletRequest request para obtener los métodos básicos de un servlet
* @param chain se utiliza (chain.doFilter(request, response);) para pasar el acceso al siguiente filtro sí existieran mas filtros y sí no hay mas filtros te redirecciona a el servlet solicitado.
* @throws IOException
* @throws ServletException
*/
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String respuesta = "";
String indexPath = "http://localhost:8080/proyecto-estandar/vistas/index.jsp";
String index = "vistas/index.jsp";
String urlRequested = "http://172.16.2.53:8080/security-rest/api/user/verificarLogin";
System.out.println("URI "+request.getRequestURI());
if (String.valueOf(request.getRequestURL()).contains(BASE)) {
String login = request.getContextPath() + "/vistas/index.jsp";
String main = request.getContextPath() + "/vistas/main.jsp";
String plantilla = request.getContextPath() + "/plantilla";
String js = request.getContextPath() + "/js";
String css = request.getContextPath() + "/css";
System.out.println(js);
String url = String.valueOf(request.getRequestURL());
if (url.contains(login) || url.contains(plantilla) || url.contains(js)|| url.contains("index.jsp")||url.contains("main.jsp")) {
if (url.equalsIgnoreCase(BASE) || url.contains(login) || url.contains(plantilla) || url.contains(js)|| url.contains(css)|| url.contains("index.jsp")||url.contains("main.jsp")) {
chain.doFilter(request, response);
} else {
PostRequest postRequest = new PostRequest(urlRequested);
JSONObject valid = null;
String auth = "";
if(url.contains(".jsp")){
if(url.contains(".jsp")){/*Valida la redirección entre páginas obteniendo los cookies y capturando el token */
auth = request.getHeader("Cookie");
if(auth.contains("Bearer")){
String[] parts = auth.split(";");
......@@ -82,15 +94,23 @@ public class RequestFilter implements Filter, ServletContextListener {
String ruta = request.getRequestURI();
int indice = GeneralUtils.obtenerIndex(ruta);
String rutaJsp = ruta.substring(indice, ruta.length());
if(url.contains(".jsp")){
boolean acceso = false;
for(Object vista :vistas){
for(int i= 0;vistas.size()>i;i++){
Object vista = vistas.get(i);
/*Esta condicional solo aplica cuando sí se tiene páginas detalle propias del sistema (que no estan registrados en SEGURIDAD) mas informacion VistasExtras.java */
switch(vista.toString()){//Agrega las vistas detalle
case VistasExtras.MANTENIMIENTO_PERSONA:VistasExtras.getVistasExtrasMantenimientoPersona(vistas); break;
case VistasExtras.OTROS:VistasExtras.getVistasExtrasMantenimientoOtros(vistas);break;//Ejemplo
}
System.out.println("Vista : "+vista +" rutaJSP : "+rutaJsp);
if(vista.toString().equalsIgnoreCase(rutaJsp)){
acceso=true;
break;
}
}
if(!acceso){
Response.ResponseBuilder builder = null;
sendError(response);
......
......@@ -21,7 +21,6 @@ public class GeneralUtils {
break;
}
}
return salida;
}
}
......@@ -28,14 +28,22 @@ public class PostRequest {
data += URLEncoder.encode(propiedad, "UTF-8") + "=" + URLEncoder.encode(valor, "UTF-8");
}
}
/**
* <p>
* Este método obtiene el token, abre una conexión y la envía en el header de la solicitud http
* y obtiene la respuesta del servidor.
* </p>
* @param authorization El token que sera asignado en el web filter para su correcta validación
* @return
* @throws IOException
*/
public String getRespueta(String authorization) throws IOException {
String respuesta = "";
//abrimos la conexión
URLConnection conn = url.openConnection();
conn.setRequestProperty("Authorization", authorization);
conn.setRequestProperty("Authorization", authorization);//Agregar header
//especificamos que vamos a escribir
conn.setDoOutput(true);
//obtenemos el flujo de escritura
......
......@@ -5,12 +5,40 @@
*/
package demojsoncrud.utilities;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public final class VistasExtras {
private static final String detalleMantenimientoPersona = "detalleMantenimientoPersona";
public static List<String> getVistasExtras(){
return null;
/*Mantenimiento Persona*/
public static final String MANTENIMIENTO_PERSONA = "mantenimientoPersona.jsp";
private static final String DETALLE_MANTENIMIENTO_PERSONA = "detalleMantenimientoPersona.jsp";
private static final String DETALLE_MANTENIMIENTO_UBIGEO = "detalleReportePersona.jsp";
private static final String DETALLE_MANTENIMIENTO_RASTREO = "detalleMantenimientoRastreo.jsp";//Ejemplo
private static final String DETALLE_MANTENIMIENTO_SIGET = "detalleMantenimientoSiget.jsp";//Ejemplo
// Otros
public static final String OTROS = "example.jsp";//Ejemplo
private static final String DETALLE_OTROS = "detalleOtros.jsp";//Ejemplo
// End otros
/**
* <p>
* Este método se invoca cuando el sistema cuenta con vistas detalle que son omisas por el sistema de Seguridad
* ya que estas vistas detalles son propias del sistema.
* Las debemos agregar como constantes para que no se pueda modificar en tiempo de ejecución.
* </p>
* @param vistas las vistas que estas registradas en el web service de Seguridad, con el fin de añadir en la misma lista nuevas vistas permitidas
* @return
*/
public static List<Object> getVistasExtrasMantenimientoPersona(List<Object> vistas){
vistas.add(DETALLE_MANTENIMIENTO_PERSONA);
vistas.add(DETALLE_MANTENIMIENTO_UBIGEO);
vistas.add(DETALLE_MANTENIMIENTO_RASTREO);
vistas.add(DETALLE_MANTENIMIENTO_SIGET);
return vistas;
}
public static List<Object> getVistasExtrasMantenimientoOtros(List<Object> vistas){
vistas.add(DETALLE_OTROS);
return vistas;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<!-- <welcome-file-list>
<welcome-file>/vistas/index.jsp</welcome-file>
</welcome-file-list>-->
<servlet>
<servlet-name>PersonaServlet</servlet-name>
<servlet-class>demojsoncrud.servlets.PersonaServlet</servlet-class>
......
......@@ -76,7 +76,13 @@ let logOut = () =>{
window.location.href = 'index.jsp'
})
}
/* vista viene = vista de donde viene sin .jsp
* vista va = vista a donde va con .jsp
* */
function setActive(vistaViene,vistaVa){
Cookies.set("active",vistaViene, {expiry : 100});
window.location.href=vistaVa;
}
logOut();
//document.querySelector('#logOut').addEventListener('click', (e) => {
// Cookies.clear('Authorization')
......
/*Obtiene el cookie y asigna una clase*/
let getActive = () =>{
let active = Cookies.get('active');
$("#"+active).parent('li').addClass('active');
}
getActive();
let getActive = () =>{
let active = Cookies.get('active');
console.log(active);
$("#"+active).parent('li').addClass('active');
}
getActive();
......@@ -20,7 +20,7 @@ const ajaxRequest = obj => {
})
}
/*Envio de datos al servicio REST*/
// http request
const httpRequest = {
login(params) {
......
......@@ -158,7 +158,7 @@ const persona = {
data: 'null',
className: 'text-center',
render: function (data, type, row) {
return "<i class='icon-forward'></i>";
return "<a href='javascript:void(0)' class='click' onclick='setActive(\"mantenimientoPersona\",\"detalleMantenimientoPersona.jsp\")' ><i class='icon-forward'></i>";
}
}
],
......
......@@ -3,7 +3,7 @@ let getMenu = () => {
}
let setMenu = () => {
let location = window.location;
let position =getUrl(location.pathname);
let position =getUrl(location.pathname,"/");
let path = location.pathname.substring(position+1);//obtiene el nombre de la vista jsp para activar la clase .active
let menu = document.getElementById("MENU");
let contenido = getMenu();
......@@ -19,6 +19,12 @@ let setMenu = () => {
+ '<span>'+modulo[i]['nombre']+'</span>'
+ '</a>';
for(let j in categoria){
let idCategoria="";
if (categoria[j]['url'].length>4){
let categoriaUrl = categoria[j]['url'].toString();
idCategoria = categoriaUrl.substr(0,categoriaUrl.length-4);//Quitar el .jsp
console.log("ID CATEGORIA ;: "+idCategoria);
}
let subCategoria = modulo[i]['subCategoria'];
html+= '<ul>';
if(path === categoria[j]['url']){
......@@ -27,9 +33,9 @@ let setMenu = () => {
html+= '<li>';
}
if(subCategoria===undefined){
html+= '<a class="addClass" id="'+categoria[j]['url']+'" href="../vistas/'+categoria[j]['url']+'">';
html+= '<a class="" id="'+idCategoria+'" href="../vistas/'+categoria[j]['url']+'">';
}else{
html+= '<a class="addClass" id="'+categoria[j]['url']+'" href="'+window.location+categoria[j]['url']+'">';
html+= '<a class="" id="'+idCategoria+'" href="'+window.location+categoria[j]['url']+'">';
}
html+= '<span>'+categoria[j]['nombre']+'</span>'
+ '</a>';
......@@ -51,11 +57,15 @@ let setMenu = () => {
html+='</li>';
}
menu.innerHTML=html;
// let activeUrl = window.location.href.substring(getUrl(location.href,"=")+1);
// let active = activeUrl.substring(0,activeUrl.length-4);
// $("#"+active).parent('li').addClass('active');
}
let getUrl = (pathname) => {
let getUrl = (pathname,caracter) => {
let position = 0;
for (let i = pathname.length-1; i > 0; i--) {
if(pathname[i]==='/'){
if(pathname[i]===caracter){
position = i;
break;
}
......
<%--
Document : detalleMantenimientoPersona
Created on : 24/04/2018, 10:50:46 AM
Author : sistem08user
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<%@include file="templates/header.jsp" %>
<!--template-core-->
<!--css-->
<!--css-->
</head>
<body>
<h1>Hello World!</h1>
<%@include file="templates/header-body.jsp" %>
<%@include file="templates/footer-body.jsp" %>
<!--js plantilla-->
<!--jQueryValidator-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/validation/validate.min.js"></script>
<!--jQueryValidator-->
<!--form-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/inputs/touchspin.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/form_input_groups.js"></script>
<!--form-->
<!--modal-->
<script type="text/javascript" src="../plantilla/assets/js/pages/components_modals.js"></script>
<!--modal-->
<!--sweetalerts-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/notifications/bootbox.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/notifications/sweet_alert.min.js"></script>
<!--sweetalerts-->
<!--datatable-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/tables/datatables/datatables.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/select2.min.js"></script>
<!--datatable-->
<!--js plantilla-->
<!--mi js-->
<script src="../js/lib/validate_inputs.js" type="text/javascript"></script>
<script src="../js/general.js" type="text/javascript"></script>
<!--mi js-->
<script src="../js/pages/sidebar.js" type="text/javascript"></script>
<script src="../js/pages/detalleMantenimientoPersona.js" type="text/javascript"></script>
</body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<%@include file="templates/header.jsp" %>
<!--template-core-->
<!--css-->
<!--css-->
</head>
<body>
<%@include file="templates/header-body.jsp" %>
<h1>Detalle Reporte</h1>
<%@include file="templates/footer-body.jsp" %>
<!--js plantilla-->
<!--jQueryValidator-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/validation/validate.min.js"></script>
<!--jQueryValidator-->
<!--form-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/inputs/touchspin.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/pages/form_input_groups.js"></script>
<!--form-->
<!--modal-->
<script type="text/javascript" src="../plantilla/assets/js/pages/components_modals.js"></script>
<!--modal-->
<!--sweetalerts-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/notifications/bootbox.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/notifications/sweet_alert.min.js"></script>
<!--sweetalerts-->
<!--datatable-->
<script type="text/javascript" src="../plantilla/assets/js/plugins/tables/datatables/datatables.min.js"></script>
<script type="text/javascript" src="../plantilla/assets/js/plugins/forms/selects/select2.min.js"></script>
<!--datatable-->
<!--js plantilla-->
<!--mi js-->
<script src="../js/lib/validate_inputs.js" type="text/javascript"></script>
<script src="../js/general.js" type="text/javascript"></script>
<script src="../js/pages/sidebar.js" type="text/javascript"></script>
<!--mi js-->
<script src="../js/pages/detalleReportePersona.js" type="text/javascript"></script>
</body>
</html>
......@@ -70,7 +70,7 @@
</div>
</div>
<!-- / content -->
<button id="" onclick="setActive('reportePersona','detalleReportePersona.jsp')" type="button" class="btn btn-primary"><i class="icon-search4 position-left"></i> Ir a Detalle</button>
<%@include file="templates/footer-body.jsp" %>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment