FIX: Configurar gerenciamento de sessão e aprimorar rotas de autenticação com melhor tratamento de erros e logging

This commit is contained in:
Gabriel Amancio 2025-10-20 07:58:32 -03:00
parent 50c2e5c82f
commit ee902f8617
2 changed files with 14 additions and 8 deletions

8
app.js
View File

@ -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",
},
})
);

View File

@ -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.");
}
});