2025-03-17 11:58:43 -03:00

48 lines
1.6 KiB
TypeScript

import sequelize from "sequelize";
import database from "../../database";
import { hash } from "bcryptjs";
const ResetPassword = async (email: string ,token: string, password: string) => {
const {hasResult , data} = await filterUser(email, token);
if (!hasResult) {
return { status: 404, message: "Email não encontrado" };
}
if(hasResult === true){
try{
const convertPassword: string= await hash(password,8)
const {hasResults , datas} = await insertHasPassword(email, token ,convertPassword);
if (datas.length === 0){
return { status: 404, message: "Token não encontrado" };
}
}catch(err){
console.log(err)
}
}
}
export default ResetPassword;
const filterUser = async (email : string , token: string)=>{
const sql = `SELECT * FROM "Users" WHERE email = '${email}' AND "resetPassword" != ''`;
const result = await database.query(sql, { type: sequelize.QueryTypes.SELECT });
return { hasResult: result.length > 0, data: result };
}
const insertHasPassword = async (email : string , token: string, convertPassword: string)=>{
const sqlValida = `SELECT * FROM "Users" WHERE email = '${email}' AND "resetPassword" = '${token}'`;
const resultado = await database.query(sqlValida, { type: sequelize.QueryTypes.SELECT });
const sqls = `UPDATE "Users" SET "passwordHash"= '${convertPassword}' , "resetPassword" = '' WHERE email= '${email}' AND "resetPassword" = '${token}'`;
const results = await database.query(sqls, { type: sequelize.QueryTypes.UPDATE });
return { hasResults: results.length > 0, datas: resultado};
}