FEAT: Criando toggle para transição de ambiente de desenvolvimento x produção.
This commit is contained in:
parent
0e8815fe77
commit
66859ac23e
3
.env
3
.env
@ -11,4 +11,5 @@ OAUTH_REDIRECT_URI=https://viabiliza.sothis.com.br/auth/callback
|
|||||||
OAUTH_SCOPES=https://graph.microsoft.com/.default
|
OAUTH_SCOPES=https://graph.microsoft.com/.default
|
||||||
SESSION_SECRET=j2633669
|
SESSION_SECRET=j2633669
|
||||||
|
|
||||||
NODE_ENV=production
|
NODE_ENV=development
|
||||||
|
DEV_SKIP_AUTH=true
|
||||||
43
app.js
43
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
|
// middleware que protege rotas que exigem login
|
||||||
function requireAuth(req, res, next) {
|
function requireAuth(req, res, next) {
|
||||||
if (req.session?.user?.authenticated) {
|
if (req.session?.user?.authenticated) {
|
||||||
@ -62,12 +74,17 @@ function createApp() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// redirect raiz
|
// redirect raiz
|
||||||
app.get("/", (req, res) => {
|
app.get("/", (req, res) => {
|
||||||
if (req.session?.user?.authenticated) {
|
// em dev com bypass, sirva a página diretamente (sem redirect)
|
||||||
return res.redirect("/public/index.html");
|
if (process.env.NODE_ENV === 'development' && process.env.DEV_SKIP_AUTH === 'true') {
|
||||||
}
|
return res.sendFile(path.join(__dirname, 'public', 'index.html'));
|
||||||
return res.redirect("/login");
|
}
|
||||||
});
|
|
||||||
|
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
|
// Usa as rotas de autenticação
|
||||||
app.use("/", authRoutes);
|
app.use("/", authRoutes);
|
||||||
|
|
||||||
// servir arquivos estáticos da pasta public (rotas protegidas já são tratadas pelo middleware global)
|
// servir arquivos estáticos
|
||||||
app.use(express.static(path.join(__dirname, "public")));
|
if (process.env.NODE_ENV === 'development' && process.env.DEV_SKIP_AUTH === 'true') {
|
||||||
|
// em desenvolvimento e com bypass ativo, exponha /static sem exigir login
|
||||||
// rota protegida que serve o index.html
|
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) => {
|
app.get("/app", requireAuth, (req, res) => {
|
||||||
res.sendFile(path.join(__dirname, "public", "index.html"));
|
res.sendFile(path.join(__dirname, "public", "index.html"));
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user