diff --git a/.env b/.env index f4c2fca..d71efea 100644 --- a/.env +++ b/.env @@ -11,4 +11,5 @@ OAUTH_REDIRECT_URI=https://viabiliza.sothis.com.br/auth/callback OAUTH_SCOPES=https://graph.microsoft.com/.default SESSION_SECRET=j2633669 -NODE_ENV=production \ No newline at end of file +NODE_ENV=development +DEV_SKIP_AUTH=true \ No newline at end of file diff --git a/app.js b/app.js index ffd6d19..2bfee84 100644 --- a/app.js +++ b/app.js @@ -40,6 +40,18 @@ function createApp() { }) ); + // -- Desenvolvimento: pular autenticação se configurado + // Para ativar: defina NODE_ENV=development e DEV_SKIP_AUTH=true no .env + if (process.env.NODE_ENV === 'development' && process.env.DEV_SKIP_AUTH === 'true') { + app.use((req, res, next) => { + // garante que exista uma sessão autenticada para facilitar testes locais + if (req.session && (!req.session.user || !req.session.user.authenticated)) { + req.session.user = { authenticated: true, dev: true }; + } + next(); + }); + } + // middleware que protege rotas que exigem login function requireAuth(req, res, next) { if (req.session?.user?.authenticated) { @@ -62,12 +74,17 @@ function createApp() { }); // redirect raiz -app.get("/", (req, res) => { - if (req.session?.user?.authenticated) { - return res.redirect("/public/index.html"); - } - return res.redirect("/login"); -}); + app.get("/", (req, res) => { + // em dev com bypass, sirva a página diretamente (sem redirect) + if (process.env.NODE_ENV === 'development' && process.env.DEV_SKIP_AUTH === 'true') { + return res.sendFile(path.join(__dirname, 'public', 'index.html')); + } + + if (req.session?.user?.authenticated) { + return res.redirect("/public/index.html"); + } + return res.redirect("/login"); + }); ///////////////////////////////////////////////////// @@ -602,10 +619,16 @@ app.get("/", (req, res) => { // Usa as rotas de autenticação app.use("/", authRoutes); - // servir arquivos estáticos da pasta public (rotas protegidas já são tratadas pelo middleware global) - app.use(express.static(path.join(__dirname, "public"))); - - // rota protegida que serve o index.html + // servir arquivos estáticos + if (process.env.NODE_ENV === 'development' && process.env.DEV_SKIP_AUTH === 'true') { + // em desenvolvimento e com bypass ativo, exponha /static sem exigir login + app.use(express.static(path.join(__dirname, "public"))); + } else { + // em produção, sirva a pasta pública apenas sob /public e protegida + app.use('/public', requireAuth, express.static(path.join(__dirname, "public"))); + } + + // rota protegida que serve o index.html como /app (mantida para produção) app.get("/app", requireAuth, (req, res) => { res.sendFile(path.join(__dirname, "public", "index.html")); });