From 2f0a6b62f1c6c3c844bf13d05e65ca496a481dfe Mon Sep 17 00:00:00 2001
From: Abelangel <abelange.burgosdi@hes-so.ch>
Date: Sat, 15 Mar 2025 14:53:04 +0100
Subject: [PATCH] nginx gere completement cors, routes partiellement valides
 (Post /QCM ,get /QCM valides)

---
 .../correction_qcm/src/express/Server.ts      |  4 +-
 microservices/cors.conf                       | 15 +--
 .../creation_qcm/src/express/Server.ts        |  4 +-
 microservices/navigation_qcm/pom.xml          | 36 --------
 .../navigation_qcm/sonar-project.properties   | 11 ---
 microservices/nginx.conf                      | 91 +++++++++++++++++++
 .../realise_qcm/src/express/Server.ts         |  4 +-
 .../search_qcm/src/express/Server.ts          |  4 +-
 8 files changed, 108 insertions(+), 61 deletions(-)
 delete mode 100644 microservices/navigation_qcm/pom.xml
 delete mode 100644 microservices/navigation_qcm/sonar-project.properties

diff --git a/microservices/correction_qcm/src/express/Server.ts b/microservices/correction_qcm/src/express/Server.ts
index a8f8cf66..b4b0e0db 100644
--- a/microservices/correction_qcm/src/express/Server.ts
+++ b/microservices/correction_qcm/src/express/Server.ts
@@ -30,12 +30,12 @@ export class Server {
         this.backend.use(morganMiddleware); //Log API accesses
         this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
         this.backend.use(bodyParser.json());
-        this.backend.use(cors({
+        /*this.backend.use(cors({
             origin: '*' ,
             methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
             allowedHeaders: ['Authorization', 'Content-Type']
           })); //Allow CORS requests
-
+*/
 
         // Routes
         this.backend.use('/', response_routes);
diff --git a/microservices/cors.conf b/microservices/cors.conf
index c63cde7d..c51cb1a7 100644
--- a/microservices/cors.conf
+++ b/microservices/cors.conf
@@ -1,12 +1,15 @@
-
 # Autoriser toutes les origines
-add_header 'Access-Control-Allow-Origin' '*';
-add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
-add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';
-add_header 'Access-Control-Max-Age' 1728000;
+add_header 'Access-Control-Allow-Origin' '*' always;
+add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
+add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always;
+add_header 'Access-Control-Max-Age' 1728000 always;
 
-# Gérer uniquement les requêtes OPTIONS avec 204
+# Gérer les pré-requêtes OPTIONS correctement
 if ($request_method = 'OPTIONS') {
+    add_header 'Access-Control-Allow-Origin' '*' always;
+    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE' always;
+    add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type' always;
+    add_header 'Access-Control-Max-Age' 1728000 always;
     add_header 'Content-Length' 0;
     add_header 'Content-Type' 'text/plain charset=UTF-8';
     return 204;
diff --git a/microservices/creation_qcm/src/express/Server.ts b/microservices/creation_qcm/src/express/Server.ts
index 24e6bee2..34ffd828 100644
--- a/microservices/creation_qcm/src/express/Server.ts
+++ b/microservices/creation_qcm/src/express/Server.ts
@@ -29,12 +29,12 @@ export class Server {
         this.backend.use(morganMiddleware); //Log API accesses
         this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
         this.backend.use(bodyParser.json());
-        this.backend.use(cors({
+        /*this.backend.use(cors({
             origin: '*' ,
             methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
             allowedHeaders: ['Authorization', 'Content-Type']
           })); //Allow CORS requests
-
+*/
 
         // Routes
         this.backend.use('/', qcm_routes);
diff --git a/microservices/navigation_qcm/pom.xml b/microservices/navigation_qcm/pom.xml
deleted file mode 100644
index e276ca8a..00000000
--- a/microservices/navigation_qcm/pom.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>com.example</groupId>
-    <artifactId>navigation_qcm</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-
-    <name>Navigation_qcm Microservice</name>
-
-    <dependencies>
-        <!-- Ajoute ici les dépendances spécifiques à ton microservice -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-            <version>2.5.4</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/microservices/navigation_qcm/sonar-project.properties b/microservices/navigation_qcm/sonar-project.properties
deleted file mode 100644
index eb3987f2..00000000
--- a/microservices/navigation_qcm/sonar-project.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-sonar.projectKey=navigation_qcm
-sonar.projectName=Navigation QCM Microservice
-sonar.projectVersion=1.0-SNAPSHOT
-sonar.sources=src
-sonar.tests=test
-sonar.language=ts
-sonar.typescript.tsconfigPath=tsconfig.json
-sonar.sourceEncoding=UTF-8
-sonar.exclusions=node_modules/**,target/**,prisma/migrations/**
-sonar.test.inclusions=**/*.test.ts
-sonar.typescript.lcov.reportPaths=coverage/lcov.info
\ No newline at end of file
diff --git a/microservices/nginx.conf b/microservices/nginx.conf
index 23bfa959..b9143be3 100644
--- a/microservices/nginx.conf
+++ b/microservices/nginx.conf
@@ -24,66 +24,157 @@ http {
 
         location /reponseCorrect/ {
             proxy_pass http://service-correction-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /responses_QCM/ {
             proxy_pass http://service-correction-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /feedback {
             proxy_pass http://service-correction-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /QCM {
             proxy_pass http://service-creation-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /QCM/ {
             proxy_pass http://service-creation-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /numeric_question {
             proxy_pass http://service-creation-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /response {
             proxy_pass http://service-realise-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /terminer {
             proxy_pass http://service-realise-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /question {
             proxy_pass http://service-realise-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /realised_QCMs {
             proxy_pass http://service-search-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /created_QCMs {
             proxy_pass http://service-search-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /true_false_question {
             proxy_pass http://service-creation-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
         location /join {
             proxy_pass http://service-realise-qcm:30992;
+            proxy_set_header Host $host;
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header X-Forwarded-Proto $scheme;
+            proxy_pass_request_headers on;
+proxy_set_header Authorization $http_authorization;
+
             include cors.conf;
         }
 
diff --git a/microservices/realise_qcm/src/express/Server.ts b/microservices/realise_qcm/src/express/Server.ts
index e178be3c..9cc57297 100644
--- a/microservices/realise_qcm/src/express/Server.ts
+++ b/microservices/realise_qcm/src/express/Server.ts
@@ -30,12 +30,12 @@ export class Server {
         this.backend.use(morganMiddleware); //Log API accesses
         this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
         this.backend.use(bodyParser.json());
-        this.backend.use(cors({
+        /*this.backend.use(cors({
             origin: '*' ,
             methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
             allowedHeaders: ['Authorization', 'Content-Type']
           })); //Allow CORS requests
-
+*/
 
         // Routes
         this.backend.use('/', questions_routes);
diff --git a/microservices/search_qcm/src/express/Server.ts b/microservices/search_qcm/src/express/Server.ts
index 6a3fea76..8f8843cb 100644
--- a/microservices/search_qcm/src/express/Server.ts
+++ b/microservices/search_qcm/src/express/Server.ts
@@ -30,12 +30,12 @@ export class Server {
         this.backend.use(morganMiddleware); //Log API accesses
         this.backend.use(helmet()); //Help to secure express, https://helmetjs.github.io/
         this.backend.use(bodyParser.json());
-        this.backend.use(cors({
+        /*this.backend.use(cors({
             origin: '*' ,
             methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
             allowedHeaders: ['Authorization', 'Content-Type']
           })); //Allow CORS requests
-
+*/
         // Routes
         this.backend.use('/', questions_routes);
         this.backend.use(express.json());
-- 
GitLab