const express = require('express'); const compression = require('compression'); const bodyParser = require('body-parser'); const passport = require('passport'); const mongoose = require('mongoose'); const session = require('express-session'); const cors = require('cors'); const { createProxyMiddleware } = require('http-proxy-middleware'); const { TextEncoder, TextDecoder } = require('util'); global.TextEncoder = TextEncoder; global.TextDecoder = TextDecoder; // Import des routes (conservez toutes vos routes existantes) const userRoutes = require('./routes/user'); const employeeRoutes = require('./routes/employee'); const authRoutes = require('./routes/auth'); const ticketRoutes = require('./routes/ticket'); const emailsRoutes = require('./routes/emailing'); const authGoogle = require('./routes/google'); const authFacebook = require('./routes/facebook'); const tirageRoutes = require('./routes/tirage'); const contactRoutes = require('./routes/contact'); const restaurantRoutes = require('./routes/restaurant'); const app = express(); // Middlewares (conservés inchangés) app.use(compression()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.urlencoded({ extended: true })); // CORS (configuration d'origine conservée) app.use(cors({ origin: 'https://angular-preprod.foodgame.fr', optionsSuccessStatus: 200 })); // Session (conservée inchangée) app.use(session({ secret: 'this_is_a_secret', resave: true, saveUninitialized: true, rolling: true, cookie: { maxAge: 360000, secure: false } })); app.use(passport.initialize()); // Proxy vers Angular SSR (modifié pour exclure /api) app.use('/', createProxyMiddleware({ target: 'http://angular_ssr_preprod:4000', changeOrigin: true, pathFilter: (path) => !path.startsWith('/api') })); // Routes API (conservées inchangées) app.get('/api', (req, res) => { res.status(200).send('Api Works.'); }); app.use('/api/users', userRoutes); app.use('/api/employees', employeeRoutes); app.use('/api/tickets', ticketRoutes); app.use('/api/auth', authRoutes); app.use('/api/emails', emailsRoutes); app.use('/api/auth/google', authGoogle); app.use('/api/auth/facebook', authFacebook); app.use('/api/tirage', tirageRoutes); app.use('/api/contact', contactRoutes); app.use('/api/restaurants', restaurantRoutes); // Connexion MongoDB (conservée inchangée) require('./lib/db'); const PORT = process.env.PORT || 4000; app.listen(PORT, () => { console.log(`Api listen on port ${PORT}.`); });