viabiliza/routes/authRoutes.js

43 lines
1.4 KiB
JavaScript
Raw Normal View History

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;