48 lines
1.6 KiB
TypeScript
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};
|
|
} |