/** * * @author Daniel Adrián Ramírez George // Para usar esta funcion es necesario cambiar las rutas ce coneccion a la base de datos que tenga tu proyecto // ademas de tener instalas las dependencias como express y bcrypt, asi como cambiar los campos de consulta a su // respectiva base de datos // Para instalar bcrypt: npm install bcrypt // Para instalar express: npm install express */ const connection = require('../conf/connection'); const express = require('express'); const bcrypt = require('bcrypt'); var app = express(); function query(consulta) { return new Promise(function(resolve, reject) { connection.query(`${consulta}`, (error, results, files) => { if (error) reject(error); resolve(results); }); }) } //Esta funcion depura las cadenas quitando los caracteres que no sean necesarios o peligrosos en las consultas SQL //Agrege o quiete los caracteres usados function depurado(cadena) { if (cadena != null){ cadena = cadena.replace(/;/g, ""); cadena = cadena.replace(/=/g, ""); cadena = cadena.replace(/:/g, ""); return cadena.replace(/'/g, "''"); } else return null; } app.post('/loggin', async(req, res) => { let usuario, password, password_consulta, pass, exite, comparar, id; try{ usuario = depurado(req.body.usuario); password = depurado(req.body.password); //Esta condicional se definio para no tener cadenas de entrada mas grandes que el campo a consultar if(usuario.length > 90 || password.length > 90 ){ res.status(400).json({ err: true, mjs: 'Correo o contraseña invalidos' }); return; } pass = await bcrypt.hash(password, 10); console.log(usuario, " ", pass, " ", password); } catch(error){ console.log(` Ocurrio un errror 1 msj: ${error}`); res.status(400).json({ err: true, mjs: 'Datos no validos' }); return; } try { //Modifique la tabla a consultar del usuario y las campos que regresa let select = `select * from Admin where usuario='${usuario}';`; password_consulta = await query(select); if ( password_consulta.length == 1) { //modifique el nombre de los campos segun essten definidos en su base de datos comparar = password_consulta[0].password; id = password_consulta[0].idUsuario; } else{ console.log(`No se encontro el usuario`); res.status(400).json({ err: true, mjs: 'Correo o contraseña invalidos' }); return; } } catch (error) { console.log(` ocurrio un error 2 msj: ${error}`); res.status(400).json({ error: true, msj: "Error en la consulta en del usuario" }); return; } try{ let correcto = bcrypt.compareSync(password, comparar); if (correcto == true) { res.status(200).json({ err: false, mjs: `Bienvenido`, id_usuario: id }); return; } else { res.status(400).json({ err: true, mjs: 'Correo o contraseña invalidos' }); return; } } catch(error){ res.status(400).json({ err: true, mjs: 'Correo o contraseña invalidos' }); return; } }); module.exports = app;