-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
96 lines (78 loc) · 2.73 KB
/
app.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import express from 'express';
import UserExtendRouter from './routes/users.extend.router.js';
import ProductsExtendRouter from './routes/products.extended.router.js';
import CartExtendRouter from './routes/carts.extended.router.js';
import viewsRouter from "./routes/views.router.js";
import mailRouter from "./routes/mailer.router.js";
import mockingRouter from "./routes/mocking.router.js";
import session from 'express-session';
import MongoStore from 'connect-mongo';
import cookieParser from 'cookie-parser';
import config from './configs/config.js';
import { addLogger } from './middlewares/logger.middleware.js';
import handlebars from "express-handlebars";
import __dirname from "./utils.js";
import passport from 'passport';
import initializePassport from './configs/auth/passport.config.js'
import MongoSingleton from './configs/mongoDB-singleton.js';
import swaggerSpecs from './configs/swagger.config.js';
import swaggerUi from "swagger-ui-express";
const SERVER_PORT = config.port;
const app = express();
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(addLogger);
app.get("/logger", (req, res) => {
req.logger.debug("Prueba de log level warn --> en developer mode");
req.logger.info("Prueba de log level info --> en production mode");
res.send("Prueba de logger!");
});
app.listen(SERVER_PORT, () => console.log(`Server listening on port ${SERVER_PORT}`));
app.engine("hbs",
handlebars.engine({
extname: "hbs",
defaultLayout: "main",
runtimeOptions: {
allowProtoPropertiesByDefault: true,
allowProtoMethodsByDefault: true
}
})
);
app.set("view engine", "hbs");
app.set("views", `${__dirname}/views`);
app.use(express.static(`${__dirname}/public`));
app.use(session(
{
store: MongoStore.create({
mongoUrl: config.urlMongo,
mongoOptions: { useNewUrlParser: true, useUnifiedTopology: true },
ttl: 10 * 60
}),
secret: "s3cr37",
resave: false,
saveUninitialized: true
}
))
app.use(cookieParser("CoderS3cr3tC0d3"));
initializePassport();
app.use(passport.initialize());
app.use(passport.session());
app.use("/", viewsRouter);
const userExtRouter = new UserExtendRouter();
const productsExtRouter = new ProductsExtendRouter();
const cartsExtRouter = new CartExtendRouter();
app.use("/api/users", userExtRouter.getRouter());
app.use("/api/products", productsExtRouter.getRouter());
app.use("/api/carts", cartsExtRouter.getRouter());
app.use("/mailer", mailRouter);
app.use("/mockingrouter", mockingRouter);
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpecs));
const mongoInstance = async () => {
try {
await MongoSingleton.getInstance();
} catch (error) {
console.error(error);
process.exit();
}
};
mongoInstance();