Files
hackApi/routes/login.js
T
2020-08-02 21:46:09 -05:00

107 lines
3.5 KiB
JavaScript

/**
* * @author Daniel Adrián Ramírez George <daniel.adrian.ramirez.george@gmail.com> <daniel.george@acatlan.unam.mx>
// 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;