From ee902f8617de08c4487a0dbb8944849cb293f8f2 Mon Sep 17 00:00:00 2001 From: "gabriel.pereira" Date: Mon, 20 Oct 2025 07:58:32 -0300 Subject: [PATCH] =?UTF-8?q?FIX:=20Configurar=20gerenciamento=20de=20sess?= =?UTF-8?q?=C3=A3o=20e=20aprimorar=20rotas=20de=20autentica=C3=A7=C3=A3o?= =?UTF-8?q?=20com=20melhor=20tratamento=20de=20erros=20e=20logging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 8 ++++++-- routes/authRoutes.js | 14 ++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app.js b/app.js index 0ab5a09..2ec8b53 100644 --- a/app.js +++ b/app.js @@ -19,19 +19,23 @@ const authRoutes = require("./routes/authRoutes.js"); function createApp() { const upload = multer({ dest: "uploads/" }); const app = express(); + + // se estiver atrás de um reverse proxy (nginx/traefik) em produção, habilite: + app.set("trust proxy", 1); + app.use(cors()); app.use(express.static(path.join(__dirname, "public"))); app.use(express.json()); - // session deve ser configurada antes de usar req.session nas rotas/middleware app.use( session({ secret: process.env.SESSION_SECRET || "change-me", resave: false, saveUninitialized: false, cookie: { - // ajuste conforme produção (secure: true se rodando em HTTPS) maxAge: 24 * 60 * 60 * 1000, + secure: process.env.NODE_ENV === "production", // true em produção HTTPS + sameSite: "lax", }, }) ); diff --git a/routes/authRoutes.js b/routes/authRoutes.js index 7906d47..d58fbe4 100644 --- a/routes/authRoutes.js +++ b/routes/authRoutes.js @@ -5,27 +5,29 @@ const router = express.Router(); // Rota para iniciar o fluxo de autenticação router.get("/login", (req, res) => { - const authUrl = getAuthUrl(); - return res.redirect(authUrl); + return res.redirect(getAuthUrl()); }); // Rota de callback após autenticação router.get("/auth/callback", async (req, res) => { + console.log("[auth callback] query:", req.query); // <-- debug: verifica code/state const code = req.query.code; if (!code) { + console.warn("[auth callback] código ausente"); return res.status(400).send("Código de autenticação não fornecido."); } try { const tokens = await getTokenFromCode(code); - // Armazena os tokens na sessão do usuário if (!req.session) req.session = {}; req.session.tokens = tokens; - return res.redirect("../public/index.html"); + console.log("[auth callback] tokens obtidos, salvando sessão"); + return res.redirect("/public/index.html"); // redirect absoluto } catch (error) { - console.error("Erro ao obter tokens:", error); - return res.status(500).send("Erro ao processar a autenticação."); + console.error("[auth callback] Erro ao obter tokens:", error.response?.data || error.message || error); + // Retorna descrição curta ao browser para facilitar depuração (remover em produção) + return res.status(500).send("Erro ao processar a autenticação. Veja logs do servidor."); } });