84 lines
2.5 KiB
JavaScript
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: 'asinea103@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 |