From 496659a3e188c194edab1672a397944f9f0b48d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pesti=20Tam=C3=A1s?= <pesti.tamas@hallgato.ppke.hu>
Date: Tue, 14 May 2024 17:43:29 +0200
Subject: [PATCH] Fix nginx API and CORS rules

---
 backend/src/main/java/hu/pazmany/security/CorsConfig.java | 7 +++++--
 frontend/src/axiosConfig.js                               | 7 +++----
 frontend/src/components/auth/Login.vue                    | 6 +++---
 frontend/src/components/auth/Register.vue                 | 4 ++--
 frontend/src/components/dogs/AddDog.vue                   | 4 ++--
 frontend/src/components/dogs/AllDogs.vue                  | 4 ++--
 frontend/src/components/dogs/EditDog.vue                  | 6 +++---
 frontend/src/components/dogs/SingleDog.vue                | 6 +++---
 8 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/backend/src/main/java/hu/pazmany/security/CorsConfig.java b/backend/src/main/java/hu/pazmany/security/CorsConfig.java
index f1524f4..2123616 100644
--- a/backend/src/main/java/hu/pazmany/security/CorsConfig.java
+++ b/backend/src/main/java/hu/pazmany/security/CorsConfig.java
@@ -10,7 +10,10 @@ public class CorsConfig implements WebMvcConfigurer {
     @Override
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
-                .allowedOrigins("http://localhost/", "https://localhost/", "http://127.0.0.1/", "https://127.0.0.1/", "https://vau-vau.web.app/", "http://localhost:3000", "http://localhost:3001", "http://localhost:3002", "http://localhost:8080")
+                .allowedOrigins(
+                    "https://vau-vau.web.app/", // from Firebase webapp frontend
+                    "http://127.0.0.1:3000/", "http://localhost:3000/", // from nodejs frontend
+                    "http://127.0.0.1/", "http://localhost/") // from nginx frontend
                 .allowedMethods("*");
     }
-}
\ No newline at end of file
+}
diff --git a/frontend/src/axiosConfig.js b/frontend/src/axiosConfig.js
index 477d2dd..16a46d9 100644
--- a/frontend/src/axiosConfig.js
+++ b/frontend/src/axiosConfig.js
@@ -1,5 +1,4 @@
-import axios from 'axios';
+export {default as axios} from 'axios';
 
-axios.defaults.baseURL = 'http://localhost:8080';
-
-export default axios;
\ No newline at end of file
+export const apiURL = 'http://localhost:8080/api'; // local development
+// export const apiURL = '/api'; // nginx
diff --git a/frontend/src/components/auth/Login.vue b/frontend/src/components/auth/Login.vue
index 2b829c6..1c4f77e 100644
--- a/frontend/src/components/auth/Login.vue
+++ b/frontend/src/components/auth/Login.vue
@@ -24,8 +24,8 @@
 </template>
 
 <script>
-import axios from '@/axiosConfig.js';
-import {mapState} from "vuex";
+import { axios, apiURL } from '@/axiosConfig.js';
+import { mapState } from "vuex";
 
 export default {
   name: 'Login',
@@ -35,7 +35,7 @@ export default {
   methods: {
     async login() {
       try {
-        const response = await axios.post('/api/login', {
+        const response = await axios.post(apiURL + '/login', {
           username: this.username,
           password: this.password
         });
diff --git a/frontend/src/components/auth/Register.vue b/frontend/src/components/auth/Register.vue
index ad3347e..1ba6333 100644
--- a/frontend/src/components/auth/Register.vue
+++ b/frontend/src/components/auth/Register.vue
@@ -19,7 +19,7 @@
 </template>
 
 <script>
-import axios from '@/axiosConfig.js';
+import { axios, apiURL } from '@/axiosConfig.js';
 import { ref } from 'vue';
 import { useStore } from 'vuex';
 import { useRouter } from 'vue-router';
@@ -74,7 +74,7 @@ export default {
 
     const register = async () => {
       try {
-        const response = await axios.post('/api/register', {
+        const response = await axios.post(apiURL + '/register', {
           username: username.value,
           password: password.value
         });
diff --git a/frontend/src/components/dogs/AddDog.vue b/frontend/src/components/dogs/AddDog.vue
index d745d9a..ec553fb 100644
--- a/frontend/src/components/dogs/AddDog.vue
+++ b/frontend/src/components/dogs/AddDog.vue
@@ -23,7 +23,7 @@
 </template>
 
 <script>
-import axios from '@/axiosConfig.js';
+import { axios, apiURL } from '@/axiosConfig.js';
 import { mapState } from 'vuex';
 
 export default {
@@ -70,7 +70,7 @@ export default {
       const config = {
         headers: { Authorization: `Bearer ${this.token}` },
       };
-      await axios.post(`/api/newdog`, this.dog, config);
+      await axios.post(apiURL + '/newdog', this.dog, config);
       this.$router.push(`/dogs`);
     },
   },
diff --git a/frontend/src/components/dogs/AllDogs.vue b/frontend/src/components/dogs/AllDogs.vue
index f748aa2..149f325 100644
--- a/frontend/src/components/dogs/AllDogs.vue
+++ b/frontend/src/components/dogs/AllDogs.vue
@@ -20,7 +20,7 @@
 
 
 <script>
-import axios from '@/axiosConfig.js';
+import { axios, apiURL } from '@/axiosConfig.js';
 
 export default {
   name: 'AllDogs',
@@ -39,7 +39,7 @@ export default {
   },
   async created() {
     try {
-      const response = await axios.get('/api/dogs', {timeout: 5000}); // 5 seconds timeout
+      const response = await axios.get(apiURL + '/dogs', {timeout: 5000}); // 5 seconds timeout
       if (response.status === 200) {
         if (response.data && response.data.length > 0) {
           this.dogs = response.data;
diff --git a/frontend/src/components/dogs/EditDog.vue b/frontend/src/components/dogs/EditDog.vue
index 0810ac2..2a907e5 100644
--- a/frontend/src/components/dogs/EditDog.vue
+++ b/frontend/src/components/dogs/EditDog.vue
@@ -35,7 +35,7 @@
 </template>
 
 <script>
-import axios from '@/axiosConfig.js';
+import { axios, apiURL } from '@/axiosConfig.js';
 import { mapState } from 'vuex';
 import vueFilePond from 'vue-filepond';
 import FilePondPluginImagePreview from 'filepond-plugin-image-preview';
@@ -64,7 +64,7 @@ export default {
       console.log('FilePond has initialized');
     },
     async fetchDog() {
-      const response = await axios.get(`/api/dogs/${this.$route.params.id}`);
+      const response = await axios.get(apiURL + `/dogs/${this.$route.params.id}`);
       this.dog = response.data;
     },
     validateAndEditDog() {
@@ -117,7 +117,7 @@ export default {
       };
 
       try {
-        await axios.post(`/api/dogs/${this.$route.params.id}/edit`, formData, config);
+        await axios.post(apiURL + `/dogs/${this.$route.params.id}/edit`, formData, config);
         this.$router.push(`/dog/${this.$route.params.id}`);
       } catch (error) {
         console.error('Error editing dog:', error);
diff --git a/frontend/src/components/dogs/SingleDog.vue b/frontend/src/components/dogs/SingleDog.vue
index 833ba9f..a4508b0 100644
--- a/frontend/src/components/dogs/SingleDog.vue
+++ b/frontend/src/components/dogs/SingleDog.vue
@@ -11,7 +11,7 @@
 </template>
 
 <script>
-import axios from '@/axiosConfig.js';
+import { axios, apiURL } from '@/axiosConfig.js';
 
 export default {
   name: 'SingleDog',
@@ -23,7 +23,7 @@ export default {
   async created() {
     const id = this.$route.params.id;
     try {
-      const response = await axios.get(`/api/dogs/${id}`);
+      const response = await axios.get(apiURL + `/dogs/${id}`);
       this.dog = response.data;
     } catch (error) {
       console.error(error);
@@ -36,7 +36,7 @@ export default {
         const config = {
           headers: { Authorization: `Bearer ${this.token}` },
         };
-        await axios.delete(`/api/dogs/${this.$route.params.id}`, config);
+        await axios.delete(apiURL + `/dogs/${this.$route.params.id}`, config);
         this.$router.push(`/dogs`);
       }
     },
-- 
GitLab