index.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 { createProxyMiddleware } = require('http-proxy-middleware');
  9. const { TextEncoder, TextDecoder } = require('util');
  10. global.TextEncoder = TextEncoder;
  11. global.TextDecoder = TextDecoder;
  12. // Correction Mongoose
  13. mongoose.set('strictQuery', false);
  14. // Import des routes (conservez toutes vos routes existantes)
  15. const userRoutes = require('./routes/user');
  16. const employeeRoutes = require('./routes/employee');
  17. const authRoutes = require('./routes/auth');
  18. const ticketRoutes = require('./routes/ticket');
  19. const emailsRoutes = require('./routes/emailing');
  20. const authGoogle = require('./routes/google');
  21. const authFacebook = require('./routes/facebook');
  22. const tirageRoutes = require('./routes/tirage');
  23. const contactRoutes = require('./routes/contact');
  24. const restaurantRoutes = require('./routes/restaurant');
  25. const app = express();
  26. // Middlewares (conservés inchangés)
  27. app.use(compression());
  28. app.use(bodyParser.json());
  29. app.use(bodyParser.urlencoded({ extended: true }));
  30. app.use(express.urlencoded({ extended: true }));
  31. // CORS (configuration d'origine conservée)
  32. app.use(cors({
  33. origin: ['https://fatboar.foodgame.fr', 'https://api-prod.foodgame.fr'],
  34. credentials: true,
  35. optionsSuccessStatus: 200
  36. }));
  37. // Session (conservée inchangée)
  38. app.use(session({
  39. secret: 'this_is_a_secret',
  40. resave: true,
  41. saveUninitialized: true,
  42. rolling: true,
  43. cookie: {
  44. maxAge: 360000,
  45. secure: false
  46. }
  47. }));
  48. app.use(passport.initialize());
  49. // Routes API AVANT le proxy (très important !)
  50. app.get('/api', (req, res) => {
  51. res.status(200).send('Api Works.');
  52. });
  53. app.use('/api/users', userRoutes);
  54. app.use('/api/employees', employeeRoutes);
  55. app.use('/api/tickets', ticketRoutes);
  56. app.use('/api/auth', authRoutes);
  57. app.use('/api/emails', emailsRoutes);
  58. app.use('/api/auth/google', authGoogle);
  59. app.use('/api/auth/facebook', authFacebook);
  60. app.use('/api/tirage', tirageRoutes);
  61. app.use('/api/contact', contactRoutes);
  62. app.use('/api/restaurants', restaurantRoutes);
  63. // Proxy vers Angular SSR EN DERNIER (pour toutes les autres routes)
  64. app.use('/', createProxyMiddleware({
  65. target: 'http://angular_ssr_prod:4000',
  66. changeOrigin: true,
  67. // Supprimez pathFilter - les routes API sont déjà gérées au-dessus
  68. }));
  69. // Connexion MongoDB (conservée inchangée)
  70. require('./lib/db');
  71. const PORT = process.env.PORT || 4000;
  72. app.listen(PORT, () => {
  73. console.log(`Api listen on port ${PORT}.`);
  74. });