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() {
|
function createApp() {
|
||||||
const upload = multer({ dest: "uploads/" });
|
const upload = multer({ dest: "uploads/" });
|
||||||
const app = express();
|
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(cors());
|
||||||
app.use(express.static(path.join(__dirname, "public")));
|
app.use(express.static(path.join(__dirname, "public")));
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
|
|
||||||
// session deve ser configurada antes de usar req.session nas rotas/middleware
|
|
||||||
app.use(
|
app.use(
|
||||||
session({
|
session({
|
||||||
secret: process.env.SESSION_SECRET || "change-me",
|
secret: process.env.SESSION_SECRET || "change-me",
|
||||||
resave: false,
|
resave: false,
|
||||||
saveUninitialized: false,
|
saveUninitialized: false,
|
||||||
cookie: {
|
cookie: {
|
||||||
// ajuste conforme produção (secure: true se rodando em HTTPS)
|
|
||||||
maxAge: 24 * 60 * 60 * 1000,
|
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
|
// Rota para iniciar o fluxo de autenticação
|
||||||
router.get("/login", (req, res) => {
|
router.get("/login", (req, res) => {
|
||||||
const authUrl = getAuthUrl();
|
return res.redirect(getAuthUrl());
|
||||||
return res.redirect(authUrl);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Rota de callback após autenticação
|
// Rota de callback após autenticação
|
||||||
router.get("/auth/callback", async (req, res) => {
|
router.get("/auth/callback", async (req, res) => {
|
||||||
|
console.log("[auth callback] query:", req.query); // <-- debug: verifica code/state
|
||||||
const code = req.query.code;
|
const code = req.query.code;
|
||||||
|
|
||||||
if (!code) {
|
if (!code) {
|
||||||
|
console.warn("[auth callback] código ausente");
|
||||||
return res.status(400).send("Código de autenticação não fornecido.");
|
return res.status(400).send("Código de autenticação não fornecido.");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const tokens = await getTokenFromCode(code);
|
const tokens = await getTokenFromCode(code);
|
||||||
// Armazena os tokens na sessão do usuário
|
|
||||||
if (!req.session) req.session = {};
|
if (!req.session) req.session = {};
|
||||||
req.session.tokens = tokens;
|
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) {
|
} catch (error) {
|
||||||
console.error("Erro ao obter tokens:", 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.");
|
// 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