107 lines
3.5 KiB
JavaScript
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; |