FIX: Configurar gerenciamento de sessão e aprimorar rotas de autenticação com melhor tratamento de erros e logging
This commit is contained in:
parent
50c2e5c82f
commit
ee902f8617
8
app.js
8
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",
|
||||
},
|
||||
})
|
||||
);
|
||||
|
||||
@ -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.");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user