This repository has been archived by the owner on May 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
79 lines (71 loc) · 2.56 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// Importar as configurações do ficheiro .env
require("dotenv").config({ path: "var.env" });
// Importar as dependências
const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const path = require("path");
const logger = require("morgan");
const passport = require("passport");
const flash = require("express-flash");
const session = require("express-session");
const fileUpload = require("express-fileupload");
// Importar as rotas
const api = require("./routes/api");
const admin = require("./routes/admin");
const app = require("./routes/app");
const auth = require("./routes/auth");
// Criar a instância do servidor
const server = express();
// Configurar o motor de templates Handlebars
const hbs = require("express-handlebars");
server.set("views", path.join(__dirname, "views"));
server.set("view engine", "hbs");
server.engine(
"hbs",
hbs.engine({
helpers: {
// Função para verificar se dois argumentos são iguais
ifEquals: function (arg1, arg2, options) {
return arg1 == arg2 ? options.fn(this) : options.inverse(this);
},
// Função para iterar uma quantidade de vezes
times: function (n, block) {
var accum = "";
for (var i = 1; i <= n; ++i) accum += block.fn(i);
return accum;
},
},
extname: "hbs",
partialsDir: __dirname + "/views/includes/",
})
);
// Configurar middlewares
server.use(logger("dev")); // Logger para desenvolvimento
server.use(cors()); // Permitir acesso de outros domínios
server.use(express.urlencoded({ extended: true })); // Permitir envio de dados via formulários
server.use(express.json()); // Permitir envio de dados via JSON
server.use(fileUpload()); // Permitir upload de ficheiros
server.use(flash()); // Permitir flash messages
server.use(
session({
// Configurar sessão
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
})
);
server.use(passport.initialize()); // Inicializar o Passport
server.use(passport.session()); // Usar sessão com o Passport
// Mapear as rotas
server.use("/api", api);
server.use("/admin", admin);
server.use("/", app);
server.use("/auth", auth);
// Servir ficheiros estáticos
server.use("/assets", express.static("./views/assets"));
server.use("/upload", express.static("upload"));
server.use("/videos/exercicios", express.static("videos/Exercicios"));
server.listen(process.env.PORT, () => {
console.log(`Servidor a rodar na porta: ${process.env.PORT}`);
});