index.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. const express = require('express');
  2. const compression = require('compression');
  3. const bodyParser = require('body-parser');
  4. const passport = require('passport');
  5. const mongoose = require('mongoose');
  6. const session = require('express-session');
  7. const cors = require('cors');
  8. const { TextEncoder, TextDecoder } = require('util');
  9. global.TextEncoder = TextEncoder;
  10. global.TextDecoder = TextDecoder;
  11. const userRoutes = require('./routes/user');
  12. const employeeRoutes = require('./routes/employee');
  13. const authRoutes = require('./routes/auth');
  14. const ticketRoutes = require('./routes/ticket');
  15. const emailsRoutes = require('./routes/emailing');
  16. const authGoogle = require('./routes/google');
  17. const authFacebook = require('./routes/facebook');
  18. const tirageRoutes = require('./routes/tirage');
  19. const contactRoutes = require('./routes/contact');
  20. const restaurantRoutes = require('./routes/restaurant');
  21. const Logger = require('./logging');
  22. const makeApiMiddleware = require('api-express-exporter');
  23. const promBundle = require('express-prom-bundle');
  24. const metricsMiddleware = promBundle({ includeMethod: true, includePath: true });
  25. const { app: ssrApp } = require('../dist/fatboar/server/main');
  26. const app = express();
  27. app.use(compression());
  28. app.use(cors({
  29. origin: 'https://angular-preprod.foodgame.fr',
  30. optionsSuccessStatus: 200
  31. }));
  32. app.use(metricsMiddleware);
  33. app.use(makeApiMiddleware());
  34. app.use(bodyParser.json());
  35. app.use(bodyParser.urlencoded({ extended: true }));
  36. app.use(express.urlencoded({ extended: true }));
  37. app.use(session({
  38. secret: 'this_is_a_secret',
  39. resave: true,
  40. saveUninitialized: true,
  41. rolling: true,
  42. cookie: {
  43. maxAge: 360000,
  44. secure: false
  45. }
  46. }));
  47. app.use(passport.initialize());
  48. app.use(express.static('dist/fatboar/browser'));
  49. app.get('/sitemap.xml', async (req, res) => {
  50. res.header('Content-Type', 'application/xml');
  51. const baseUrl = 'https://angular-preprod.foodgame.fr';
  52. let xml = `<?xml version="1.0" encoding="UTF-8"?>
  53. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">`;
  54. const staticPages = [
  55. { url: '/', lastmod: '2025-06-24', changefreq: 'daily', priority: '1.0' },
  56. { url: '/home', lastmod: '2025-06-24', changefreq: 'daily', priority: '0.9' },
  57. { url: '/register', lastmod: '2025-06-24', changefreq: 'weekly', priority: '0.8' },
  58. { url: '/cgu', lastmod: '2025-06-24', changefreq: 'monthly', priority: '0.7' },
  59. { url: '/mention-legales', lastmod: '2025-06-24', changefreq: 'monthly', priority: '0.7' },
  60. { url: '/politique-de-confidentialite', lastmod: '2025-06-24', changefreq: 'monthly', priority: '0.7' },
  61. { url: '/contact', lastmod: '2025-06-24', changefreq: 'weekly', priority: '0.8' },
  62. { url: '/tirage', lastmod: '2025-06-24', changefreq: 'daily', priority: '0.9' }
  63. ];
  64. staticPages.forEach(page => {
  65. xml += `
  66. <url>
  67. <loc>${baseUrl}${page.url}</loc>
  68. <lastmod>${page.lastmod}</lastmod>
  69. <changefreq>${page.changefreq}</changefreq>
  70. <priority>${page.priority}</priority>
  71. </url>`;
  72. });
  73. xml += `
  74. </urlset>`;
  75. res.send(xml);
  76. });
  77. app.get('/robots.txt', (req, res) => {
  78. res.sendFile('robots.txt', { root: 'dist/fatboar/browser' });
  79. });
  80. app.get('/api', (req, res) => {
  81. res.status(200).send('Api Works.');
  82. });
  83. app.use('/api/users', userRoutes);
  84. app.use('/api/employees', employeeRoutes);
  85. app.use('/api/tickets', ticketRoutes);
  86. app.use('/api/auth', authRoutes);
  87. app.use('/api/emails', emailsRoutes);
  88. app.use('/api/auth/google', authGoogle);
  89. app.use('/api/auth/facebook', authFacebook);
  90. app.use('/api/tirage', tirageRoutes);
  91. app.use('/api/contact', contactRoutes);
  92. app.use('/api/restaurants', restaurantRoutes);
  93. app.use(ssrApp());
  94. require('./lib/db');
  95. const PORT = process.env.PORT || 4000;
  96. app.listen(PORT, () => {
  97. console.log(`Api listen on port ${PORT}.`);
  98. });