Files
ASINEA-API/routes/enviar_password.js
T
2020-02-28 21:36:25 -06:00

84 lines
2.5 KiB
JavaScript

const connection = require('../conf/connection.js');
const express = require('express');
const bcrypt = require('bcrypt');
const sendmail = require('sendmail')();
var app = express()
var randomstring = require("randomstring");
function query(consulta) {
return new Promise(function(resolve, reject) {
connection.query(`${consulta}`, (error, results, files) => {
if (error) reject(error);
resolve(results);
});
})
}
function depurado(cadena) {
if (cadena != null) {
cadena = cadena.replace(/'/g, "''");
cadena = cadena.replace(/;/g, "m");
return cadena;
} else
return null;
}
app.get('/enviar_password', async(req, res) => {
let id_persona;
try {
let n = req.query.correo;
console.log(req.query);
console.log(req.query, n);
n = depurado(n);
let cad = `select id_persona from persona where correo='${n}'`;
console.log(cad);
let respuesta = await query(cad);
console.log("depurado: ", n);
console.log("respuesta: ", respuesta);
if (respuesta.length == 0)
return res.status(400).json({ error: true, msj: "El correo aún no se ha registrado" });
else
id_persona = respuesta[0].id_persona;
} catch (err) {
console.log("afuera ", err);
res.status(400).json({ error: true, msj: "error al verificar el correo" });
}
try {
let nueva = randomstring.generate({
length: 10,
charset: 'alphanumeric'
});
let n_pasword = await bcrypt.hash(nueva, 10);
let cad = `update persona set password='${n_pasword}' where id_persona=${id_persona};`;
let respuesta = query(cad);
respuesta.then(() => {
let correo = req.query.correo;
sendmail({
from: 'conversatorios.asinea2020@fa.unam.mx',
to: `${correo}`,
subject: 'Recuperacion de contraseña ASINE',
html: `Estimado usuario su nueva contraseña es: ${nueva}`,
}, function(err, reply) {
console.log(err && err.stack);
console.dir(reply);
});
}).catch(() => {
return res.status(400).json({ error: true, msj: "error al actualizar la contraseña" });
})
res.status(200).json({ error: false, msj: "exito" });
} catch (err) {
return res.status(400).json({ error: true, msj: "error al encriptar la contraseña" });
}
})
module.exports = app