Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions src/api/clients/sheets/checkOne.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Request, Response } from "express";
import { SheetsApi } from "../../../services/sheetsApi";
import { resetPasswordApi } from "../../../services/resetPasswordApi";

export async function checkOne(req: Request, res: Response) {
const { document } = req.params;
Expand All @@ -11,12 +12,20 @@ export async function checkOne(req: Request, res: Response) {

try {
const data = await SheetsApi();

const filteredData = data.filter((doc: any) => {
return doc.Documento_Cliente == documentReplaced && doc.Senha == password;
});
if (filteredData.length === 0) {
return res.status(404).json("CPF informado ou senha não correspondem.");
const resposta = await resetPasswordApi({ options: { documentReplaced } });
if (!resposta) {
return res.status(500).json("Erro ao resetar a senha.");
}
return res
.status(404)
.json(
"CPF informado ou senha não correspondem. Senha resetada por segurança."
);
//RESETAR A SENHA AQUI
}
const finalObject = filteredData.map((item: any) => {
return {
Expand All @@ -40,7 +49,6 @@ export async function checkOne(req: Request, res: Response) {

res.status(200).json(finalObject[0]);
} catch (error) {
console.error(error);
res.status(500).json("Erro interno no servidor");
}
}
50 changes: 50 additions & 0 deletions src/services/resetPasswordApi.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
const { JWT } = require("google-auth-library");
require("dotenv").config();

export async function resetPasswordApi({ options }: { options: any }) {
const client = new JWT({
email: process.env.CLIENT_EMAIL,
key: process.env.PRIVATE_KEY?.replace(/\\n/g, "\n"),
scopes: ["https://www.googleapis.com/auth/spreadsheets"],
});
//Busca do ENV.
const spreadsheetId = process.env.SHEETS_ID; // Substitua pelo ID da sua planilha
const range = `${process.env.SHEETS_NAME}!D:P`; // Ajuste a range conforme necessário
try {
const getUrl = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${range}`;
const getResponse = await client.request({ url: getUrl });
const rows = getResponse.data.values;
const cpfIndex = rows[0].indexOf("Documento_Cliente");
let rowIndex = -1;

for (let i = 1; i < rows.length; i++) {
if (rows[i][cpfIndex] == options.documentReplaced) {
rowIndex = i + 1; // Planilhas são indexadas a partir de 1
break;
}
}
if (rowIndex === -1) {
return "CPF não encontrado.";
}
const updateRange = `${process.env.SHEETS_NAME}!P${rowIndex}:P${rowIndex}`; // Ajuste conforme necessário
const updateUrl = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${updateRange}?valueInputOption=RAW`;
const values = [""];

const updateResponse = await client.request({
url: updateUrl,
method: "PUT",
data: {
range: updateRange,
majorDimension: "ROWS",
values: [values],
},
});

if (updateResponse.status === 200) {
return "Senha atualizada";
}
} catch (error) {
console.error("Error updating password:", error);
return error;
}
}