You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

73 lines
2.1 KiB

  1. require('dotenv').config({
  2. path: `./env-files/${process.env.NODE_ENV || 'development'}.env`,
  3. });
  4. const express = require('express');
  5. const { createProxyMiddleware } = require('http-proxy-middleware');
  6. const path = require('path');
  7. const expressLayouts = require('express-ejs-layouts');
  8. const cookieParser = require('cookie-parser');
  9. const session = require('express-session');
  10. const initAuthMiddleware = require('./features/login/init-auth-middleware');
  11. const indexRouter = require('./routes/index');
  12. const sessionRouter = require('./routes/session');
  13. const userRouter = require('./routes/user');
  14. const staticFolder = 'public';
  15. const app = express();
  16. //router proxies
  17. app.use('/api', createProxyMiddleware({ target: process.env.backend_url, changeOrigin: true }));
  18. app.use('/uploads', createProxyMiddleware({ target: process.env.backend_url, changeOrigin: true }));
  19. // view engine setup
  20. app.set('views', path.join(__dirname, 'views'));
  21. app.set('view engine', 'ejs');
  22. app.use(expressLayouts);
  23. app.use(express.json());
  24. app.use(express.urlencoded({ extended: false }));
  25. app.use(cookieParser());
  26. app.use(express.static(path.join(__dirname, staticFolder)));
  27. const { COOKIE_EXPIRATION_MS } = process.env;
  28. app.use(
  29. session({
  30. secret: process.env.session_secret,
  31. name: process.env.SESSION_COOKIE_NAME,
  32. resave: false,
  33. saveUninitialized: true,
  34. cookie: {
  35. secure: false, //soalnyo harus https
  36. expires: Date.now() + parseInt(COOKIE_EXPIRATION_MS, 10),
  37. maxAge: parseInt(COOKIE_EXPIRATION_MS, 10),
  38. },
  39. })
  40. );
  41. initAuthMiddleware(app);
  42. // Middleware used for setting error and success messages as available in _ejs_ templates
  43. app.use((req, res, next) => {
  44. if (req.session) {
  45. if(req.session.userInfo)req.session.userInfo['name']=req.session.userInfo.username;
  46. res.locals.messages = req.session.messages;
  47. res.locals.userInfo = req.session.userInfo;
  48. req.session.messages = {};
  49. }
  50. next();
  51. });
  52. app.use('/', indexRouter);
  53. app.use('/session',sessionRouter);
  54. app.use('/user',userRouter);
  55. // catch 404 and forward to error handler
  56. app.use((req, res) => {
  57. res.status(404).render('pages/404');
  58. });
  59. module.exports = app;