const express = require("express"); const { getAuthUrl, getTokenFromCode } = require("../service/authService"); const router = express.Router(); // Rota para iniciar o fluxo de autenticação router.get("/login", (req, res) => { 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); 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); // garante que exista req.session e sempre grava tokens if (!req.session) req.session = {}; req.session.tokens = tokens; // salva a sessão antes de redirecionar para evitar perda em stores assíncronas req.session.save((err) => { if (err) { console.error("[auth callback] erro ao salvar sessão:", err); return res.status(500).send("Erro ao salvar sessão."); } console.log("[auth callback] sessão salva, redirecionando"); return res.redirect("/public/index.html"); }); } catch (error) { console.error("[auth callback] Erro ao obter tokens:", error.response?.data || error.message || error); return res.status(500).send("Erro ao processar a autenticação. Veja logs do servidor."); } }); module.exports = router;