From 95600148658163c87d0e812f6213675566d109ed Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 2 Jan 2022 14:42:39 -0600 Subject: [PATCH] nueva libreria para validar variables --- server/helper/validar.js | 247 +++++++++++++++++++++------------------ 1 file changed, 131 insertions(+), 116 deletions(-) diff --git a/server/helper/validar.js b/server/helper/validar.js index 54ca01b..42554d8 100644 --- a/server/helper/validar.js +++ b/server/helper/validar.js @@ -1,60 +1,26 @@ -// const fs = require('fs'); const moment = require('moment'); const validator = require('validator'); -const Servicio = require('../db/tablas/Servicio'); -const noValido = (campo) => { - throw new Error(`${campo} no es valido.`); -}; - -const noHay = (variable, campo) => { - if (!variable) throw new Error(`Falta ${campo}.`); -}; - -const yaExiste = (campo) => { - throw new Error(`${campo} ya se encuentra en uso.`); -}; - -const validar = (texto, campo, length) => { - noHay(texto, campo); - if (typeof texto !== 'string' || (length && texto.length > length)) - noValido(campo); - return texto; -}; - -const validarId = (id) => { - let campo = 'El id'; - - noHay(id, campo); - if (typeof id === 'number') id = id.toString(); - if (typeof id !== 'string' || !validator.isNumeric(id, { no_symbols: true })) - noValido(campo); - return Number(id); -}; - -const validarCorreo = (correo) => { - let campo = 'El correo'; - - noHay(correo, campo); - if (typeof correo !== 'string' || !validator.isEmail(correo)) noValido(campo); - return correo; -}; - -const caracteresEspeciales = (char) => { +// Caractéres especiales permitidos en una string +const caracterEspecial = (char) => { const charset = [ ' ', '.', - '-', ',', - '/', - '#', - '?', - '¿', ':', ';', + '?', + '¿', + '!', + '¡', + '(', + ')', '"', "'", + '-', '_', + '/', + '#', '%', '\n', ]; @@ -63,107 +29,156 @@ const caracteresEspeciales = (char) => { return false; }; -const validarTexto = (texto, campo, length) => { - noHay(texto, campo); - if (typeof texto !== 'string' || texto.length > length) noValido(campo); +const yaExiste = (campo, m) => { + throw new Error(`Ya se encuentra en uso ${m ? 'el' : 'la'} ${campo}.`); +}; + +const noValido = (campo, m, razon) => { + throw new Error( + `${m ? 'El' : 'La'} ${campo} no es valid${m ? 'o' : 'a'}, ${razon}.` + ); +}; + +/* + Valida que la variable contenga un valor, de lo contrario saca un error. +*/ +const noHay = (variable, campo, m) => { + if (!variable) throw new Error(`No se mando ${m ? 'el' : 'la'} ${campo}.`); +}; + +/* + Valida que la variable sea una string y, si se necesita, que mida igual + o menor que una longitud determinada. +*/ +const validacionBasicaStr = (texto, campo, m, length) => { + noHay(texto, campo, m); + if (typeof texto !== 'string') noValido(campo, m, 'no se mando una string'); + if (length && texto.length > length) + noValido(campo, m, 'tiene más carecteres de lo permitido'); + return texto; +}; + +/* + Valida que la variable sea un numero entero, ya sea que recibe una string o + un number. Usualmente se usa para validar ids. +*/ +const validarNumeroEntero = (numero, campo, m = true) => { + noHay(numero, campo, m); + if (typeof numero === 'number') numero = numero.toString(); + if (typeof numero !== 'string') + noValido(campo, m, 'no se mando una string o un number'); + if (!validator.isNumeric(numero, { no_symbols: true })) + noValido(campo, m, 'no es un número entero valido'); + return Number(numero); +}; + +/* + Valida que la stirng mandada sea un correo valido. +*/ +const validarCorreo = (correo, campo = 'correo', m = true, length) => { + validacionBasicaStr(correo, campo, m, length); + if (!validator.isEmail(correo)) noValido(campo, m, 'no es un correo válido'); + return correo; +}; + +/* + Valida que la stirng mandada sean caracteres del abcdario. + Usualmente se usa para validar nombres, apellidos, etc. +*/ +const validarTexto = (texto, campo, m, length) => { + validacionBasicaStr(texto, campo, m, length); + for (let i = 0; i < texto.length; i++) + if ( + !validator.isAlpha(texto[i], 'es-ES') && + texto[i] != ' ' && + texto[i] != '.' + ) + noValido(campo, m, 'contiene caracteres no validos'); + return texto; +}; + +/* + Lo mismo que el de arriba pero este permite números y + caracteres especiales. +*/ +const validarAlfanumerico = (texto, campo, m, length) => { + validacionBasicaStr(texto, campo, m, length); for (let i = 0; i < texto.length; i++) { - if (caracteresEspeciales(texto[i])) continue; - if (!validator.isAlpha(texto[i], 'es-ES')) noValido(campo); + if (caracterEspecial(texto[i])) continue; + if (!validator.isAlphanumeric(texto[i], 'es-ES')) + noValido(campo, m, 'contiene caracteres no validos'); } return texto; }; -const validarAlfanumerico = (texto, campo, length) => { - noHay(texto, campo); - if (typeof texto !== 'string' || texto.length > length) noValido(campo); - for (let i = 0; i < texto.length; i++) { - if (caracteresEspeciales(texto[i])) continue; - if (!validator.isAlphanumeric(texto[i], 'es-ES')) noValido(campo); - } - return texto; -}; - -const validarNumeroCuenta = (numeroCuenta) => { - let campo = 'El numero de cuenta'; - - noHay(numeroCuenta, campo); - if ( - typeof numeroCuenta !== 'string' || - !validator.isNumeric(numeroCuenta, { no_symbols: true }) || - numeroCuenta.length > 9 - ) - noValido(campo); +/* + Valida que la string sea un número menor a 9 dígitos. +*/ +const validarNumeroCuenta = ( + numeroCuenta, + campo = 'numero de cuenta', + m = true +) => { + validacionBasicaStr(numeroCuenta, campo, m, 9); + if (!validator.isNumeric(numeroCuenta, { no_symbols: true })) + noValido(campo, m, 'tiene caracteres que nos son números'); return numeroCuenta; }; -const validarFecha = (fecha) => { - let campo = 'La fecha'; +/* + Valida que la variable sea una fecha moment valida. +*/ +const validarFecha = (fecha, campo, m) => { let fechaMoment = moment(fecha); - noHay(fecha, campo); - if (!fechaMoment.isValid()) noValido(campo); + noHay(fecha, campo, m); + if (!fechaMoment.isValid()) noValido(campo, m, 'no es una fecha válida'); return fechaMoment; }; -const validarNumero = (numero, makeNumber = false, length) => { - let campo = 'El numero'; - - noHay(numero, campo); - if ( - typeof numero !== 'string' || - !validator.isNumeric(numero, { no_symbols: true }) || - (length && numero.length > length) - ) - noValido(campo); +/* + Valida que una string contenga solo números +*/ +const validarNumero = ( + numero, + campo, + m, + length, + no_symbols = true, + makeNumber = false +) => { + validacionBasicaStr(numero, campo, m, length); + if (!validator.isNumeric(numero, { no_symbols })) noValido(campo); if (makeNumber) return Number(numero); return numero; }; -const validarPreTermino = (idServicio) => { - return Servicio.findOne({ where: { idServicio } }) - .then((res) => { - if ( - res.idCuestionarioPrograma && - res.idCuestionarioAlumno && - res.cartaTermino && - res.informeGlobal - ) - return Servicio.update({ idStatus: 5 }, { where: { idServicio } }); - return false; - }) - .then((res) => { - if (res) - return 'Este Servicio Social paso a Termino, espera a que COESI autorice tu liberación.'; - return ''; - }); -}; - -const validarAccesibilidad = (usuariosValidos = [], idTipoUsuario) => { - for (let i = 0; i < usuariosValidos.length; i++) - if (idTipoUsuario === usuariosValidos[i]) return; - throw new Error('Este usuario no tiene permitido usar esta linea de la API.'); -}; +// const validarAccesibilidad = (usuariosValidos = [], idTipoUsuario) => { +// for (let i = 0; i < usuariosValidos.length; i++) +// if (idTipoUsuario === usuariosValidos[i]) return; +// throw new Error('Este usuario no tiene permitido usar esta linea de la API.'); +// }; +/* + Te dice si un objeto esta vacio o no. +*/ const validarObjetoVacio = (obj) => { - for (let key in obj) { - if (obj.hasOwnProperty(key)) return false; - } + for (let key in obj) if (obj.hasOwnProperty(key)) return false; + return true; }; module.exports = { - validar, - noValido, yaExiste, + noValido, noHay, + validacionBasicaStr, + validarNumeroEntero, validarCorreo, - validarId, validarTexto, validarAlfanumerico, validarNumeroCuenta, validarFecha, validarNumero, - validarPreTermino, - validarAccesibilidad, validarObjetoVacio, };