diff --git a/.env b/.env index 1d4d201..1592b91 100644 --- a/.env +++ b/.env @@ -7,6 +7,6 @@ PORT="3000" OAUTH_CLIENT_ID=e2104cd1-d67c-4ac1-8fe2-36e8caac89b7 OAUTH_CLIENT_SECRET=sVj8Q~eSXJpnQoqjvpOwjYeesVf_DJNRqTa4ua-6 OAUTH_TENANT_ID=5cd8533a-4260-48c5-87fd-8511b1b42f9b -OAUTH_REDIRECT_URI=http://localhost:3000/auth/callback +OAUTH_REDIRECT_URI=http://viabiliza.sothis.com.br/auth/callback OAUTH_SCOPES=https://graph.microsoft.com/.default SESSION_SECRET=j2633669 \ No newline at end of file diff --git a/app.js b/app.js index 74630e9..4cc3454 100644 --- a/app.js +++ b/app.js @@ -537,6 +537,24 @@ function createApp() { } }); + //////////////////////////////////////////////////// + + // Servir arquivos estáticos (index.html) +app.use("/public", express.static(path.join(__dirname, "src/public"))); + +// Usa as rotas de autenticação +app.use("/", authRoutes); + +// Middleware para proteger rotas +app.use((req, res, next) => { + if (!req.session.user && req.path !== "/login" && !req.path.startsWith("/auth")) { + return res.redirect("/login"); + } + next(); +}); + + ///////////////////////////////////////////////////// + return app; } diff --git a/routes/authRoutes.js b/routes/authRoutes.js new file mode 100644 index 0000000..c2a503e --- /dev/null +++ b/routes/authRoutes.js @@ -0,0 +1,35 @@ +import express from "express"; +import {getAuthUrl, getTokenFomCode} from "../service/authService.js"; + +const router = express.Router(); + +// Rota para iniciar o fluxo de autenticação + +router.get("/login", (req, res) => { + const authUrl = getAuthUrl(); + return res.redirect(authUrl); +}); + + +// Rota de callback após autenticação + +router.get("/auth/callback", async (req, res) => { + const code = req.query.code; + + if (!code) { + return res.status(400).send("Código de autenticação não fornecido."); + } + + try { + const tokens = await getTokenFomCode(code); + // Armazena os tokens na sessão do usuário + req.session.tokens = tokens; + return res.redirect("/public/index.html"); + } catch (error) { + console.error("Erro ao obter tokens:", error); + return res.status(500).send("Erro ao processar a autenticação."); + } + +}) + +export default router; \ No newline at end of file