require('dotenv').config(); const express = require('express'); const cors = require('cors'); const { auth } = require('express-openid-connect'); const mongoose = require('mongoose'); const config = require('./config'); const app = express(); // Basic middleware app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cors({ origin: config.frontend.url, credentials: true })); // Auth0 configuration const auth0Config = { authRequired: false, auth0Logout: true, baseURL: config.server.url, clientID: config.auth0.clientId, issuerBaseURL: `https://${config.auth0.domain}`, secret: config.auth0.secret, routes: { login: false, // Disable default login route logout: false // Disable default logout route } }; app.use(auth(auth0Config)); // Auth routes app.get('/api/auth/login', (req, res) => { res.oidc.login({ returnTo: config.frontend.url, authorizationParams: { redirect_uri: `${config.server.url}/callback` } }); }); app.get('/api/auth/logout', (req, res) => { res.oidc.logout({ returnTo: config.frontend.url }); }); app.get('/api/auth/user', (req, res) => { if (req.oidc.isAuthenticated()) { res.json(req.oidc.user); } else { res.json(null); } }); // Callback route app.get('/callback', (req, res) => { res.redirect(config.frontend.url); }); // Other routes... const deploymentRoutes = require('./routes/deployments'); app.use('/api/deployments', deploymentRoutes); // Start server const port = config.port || 3001; app.listen(port, () => { console.log(`Server running on port ${port}`); });