require('dotenv').config({ path: `./env-files/${process.env.NODE_ENV || 'development'}.env`, }); const express = require('express'); const { createProxyMiddleware } = require('http-proxy-middleware'); const path = require('path'); const expressLayouts = require('express-ejs-layouts'); const cookieParser = require('cookie-parser'); const session = require('express-session'); const initAuthMiddleware = require('./features/login/init-auth-middleware'); const indexRouter = require('./routes/index'); const sessionRouter = require('./routes/session'); const userRouter = require('./routes/user'); const staticFolder = 'public'; const app = express(); //router proxies app.use('/api', createProxyMiddleware({ target: process.env.backend_url, changeOrigin: true })); app.use('/uploads', createProxyMiddleware({ target: process.env.backend_url, changeOrigin: true })); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(expressLayouts); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, staticFolder))); const { COOKIE_EXPIRATION_MS } = process.env; app.use( session({ secret: process.env.session_secret, name: process.env.SESSION_COOKIE_NAME, resave: false, saveUninitialized: true, cookie: { secure: false, //soalnyo harus https expires: Date.now() + parseInt(COOKIE_EXPIRATION_MS, 10), maxAge: parseInt(COOKIE_EXPIRATION_MS, 10), }, }) ); initAuthMiddleware(app); // Middleware used for setting error and success messages as available in _ejs_ templates app.use((req, res, next) => { if (req.session) { if(req.session.userInfo)req.session.userInfo['name']=req.session.userInfo.username; res.locals.messages = req.session.messages; res.locals.userInfo = req.session.userInfo; req.session.messages = {}; } next(); }); app.use('/', indexRouter); app.use('/session',sessionRouter); app.use('/user',userRouter); // catch 404 and forward to error handler app.use((req, res) => { res.status(404).render('pages/404'); }); module.exports = app;