From 705d445d3cb81ea6b61810b124987707c5417be1 Mon Sep 17 00:00:00 2001 From: Yesitha Sathsara <60166952+yesitha@users.noreply.github.com> Date: Wed, 8 Jan 2025 21:16:11 +0530 Subject: [PATCH] CORS error fix --- .../controller/AdminController.java | 2 +- .../controller/AuthenticationController.java | 1 - .../controller/StudentController.java | 2 +- .../controller/TeacherController.java | 1 - .../com/itgura/controller/DmsController.java | 2 +- .../itgura/lmsgateway/config/AppConfig.java | 6 +++- .../itgura/lmsgateway/config/CorsConfig.java | 31 +++++++++++++++++++ .../controller/PaymentController.java | 2 +- .../controller/PermissionController.java | 2 +- .../controller/AssignmentController.java | 3 +- .../com/itgura/controller/QuizController.java | 3 +- .../controller/AnnouncementController.java | 2 +- .../itgura/controller/ClassController.java | 2 +- .../itgura/controller/ContentController.java | 2 +- .../itgura/controller/LessonController.java | 2 +- .../itgura/controller/MaterialController.java | 2 +- .../controller/MaterialTypeController.java | 2 +- .../itgura/controller/SessionController.java | 2 +- .../com/itgura/controller/UserController.java | 9 ++++-- .../service/impl/MaterialServiceImpl.java | 2 ++ 20 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 lms-gateway/src/main/java/com/itgura/lmsgateway/config/CorsConfig.java diff --git a/auth-service/src/main/java/com/itgura/authservice/controller/AdminController.java b/auth-service/src/main/java/com/itgura/authservice/controller/AdminController.java index 4261016..1c3e7e8 100644 --- a/auth-service/src/main/java/com/itgura/authservice/controller/AdminController.java +++ b/auth-service/src/main/java/com/itgura/authservice/controller/AdminController.java @@ -11,7 +11,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping("api/v1/auth-service-protected/admin") @RequiredArgsConstructor diff --git a/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java b/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java index 8240cb3..4988b48 100644 --- a/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java +++ b/auth-service/src/main/java/com/itgura/authservice/controller/AuthenticationController.java @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.*; @RestController -@CrossOrigin(origins = "*", allowedHeaders = "*") @RequestMapping("/api/v1/auth-service") @RequiredArgsConstructor public class AuthenticationController { diff --git a/auth-service/src/main/java/com/itgura/authservice/controller/StudentController.java b/auth-service/src/main/java/com/itgura/authservice/controller/StudentController.java index f90ab8d..412cb23 100644 --- a/auth-service/src/main/java/com/itgura/authservice/controller/StudentController.java +++ b/auth-service/src/main/java/com/itgura/authservice/controller/StudentController.java @@ -4,7 +4,7 @@ import org.springframework.web.bind.annotation.*; @RestController -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RequestMapping("api/v1/auth-service-protected/student") @RequiredArgsConstructor diff --git a/auth-service/src/main/java/com/itgura/authservice/controller/TeacherController.java b/auth-service/src/main/java/com/itgura/authservice/controller/TeacherController.java index 01a50b0..70955a6 100644 --- a/auth-service/src/main/java/com/itgura/authservice/controller/TeacherController.java +++ b/auth-service/src/main/java/com/itgura/authservice/controller/TeacherController.java @@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.RestController; @RestController -@CrossOrigin(origins = "*", allowedHeaders = "*") @RequestMapping("api/v1/auth-service-protected/admin/teacher") @RequiredArgsConstructor public class TeacherController { diff --git a/dms-mediator/dms-mediator-all/src/main/java/com/itgura/controller/DmsController.java b/dms-mediator/dms-mediator-all/src/main/java/com/itgura/controller/DmsController.java index 1a5a9c0..7989563 100644 --- a/dms-mediator/dms-mediator-all/src/main/java/com/itgura/controller/DmsController.java +++ b/dms-mediator/dms-mediator-all/src/main/java/com/itgura/controller/DmsController.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.DMS_MEDIATOR) public class DmsController { diff --git a/lms-gateway/src/main/java/com/itgura/lmsgateway/config/AppConfig.java b/lms-gateway/src/main/java/com/itgura/lmsgateway/config/AppConfig.java index cfd5933..3430fc9 100644 --- a/lms-gateway/src/main/java/com/itgura/lmsgateway/config/AppConfig.java +++ b/lms-gateway/src/main/java/com/itgura/lmsgateway/config/AppConfig.java @@ -4,13 +4,17 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; @Configuration public class AppConfig { @Bean - public RestTemplate template() { return new RestTemplate(); } + + } diff --git a/lms-gateway/src/main/java/com/itgura/lmsgateway/config/CorsConfig.java b/lms-gateway/src/main/java/com/itgura/lmsgateway/config/CorsConfig.java new file mode 100644 index 0000000..5c5f05d --- /dev/null +++ b/lms-gateway/src/main/java/com/itgura/lmsgateway/config/CorsConfig.java @@ -0,0 +1,31 @@ +package com.itgura.lmsgateway.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; +import org.springframework.web.reactive.config.CorsRegistry; +import org.springframework.web.reactive.config.WebFluxConfigurer; + + +@Configuration +public class CorsConfig { + + @Bean + public CorsWebFilter corsWebFilter() { + CorsConfiguration corsConfiguration = new CorsConfiguration(); + corsConfiguration.addAllowedOrigin("http://localhost:3000"); // Development + corsConfiguration.addAllowedOrigin("https://168.138.184.140"); // Production IP + corsConfiguration.addAllowedOrigin("https://itgura.lk"); // Production domain + corsConfiguration.addAllowedHeader("*"); // Allow all headers + corsConfiguration.addAllowedMethod("*"); // Allow all HTTP methods + corsConfiguration.setAllowCredentials(true); // Allow credentials like cookies + corsConfiguration.addExposedHeader("Authorization"); // Expose specific headers + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", corsConfiguration); + + return new CorsWebFilter(source); + } +} diff --git a/payment-service/src/main/java/com/itgura/paymentservice/controller/PaymentController.java b/payment-service/src/main/java/com/itgura/paymentservice/controller/PaymentController.java index 127766b..dddd673 100644 --- a/payment-service/src/main/java/com/itgura/paymentservice/controller/PaymentController.java +++ b/payment-service/src/main/java/com/itgura/paymentservice/controller/PaymentController.java @@ -23,7 +23,7 @@ import java.util.UUID; @RestController -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RequestMapping("/api/v1/payment-service") @RequiredArgsConstructor public class PaymentController { diff --git a/payment-service/src/main/java/com/itgura/paymentservice/controller/PermissionController.java b/payment-service/src/main/java/com/itgura/paymentservice/controller/PermissionController.java index d58fe51..e346e6b 100644 --- a/payment-service/src/main/java/com/itgura/paymentservice/controller/PermissionController.java +++ b/payment-service/src/main/java/com/itgura/paymentservice/controller/PermissionController.java @@ -16,7 +16,7 @@ import java.util.List; @RestController -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.PAYMENT_SERVICE) @RequiredArgsConstructor public class PermissionController { diff --git a/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/AssignmentController.java b/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/AssignmentController.java index d06b069..cc7790d 100644 --- a/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/AssignmentController.java +++ b/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/AssignmentController.java @@ -19,7 +19,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.QUIZ_SERVICE) public class AssignmentController { @@ -71,6 +71,7 @@ public AppResponse> getAssignmentsByClassIds(@Request return AppResponse.error(null, e.getMessage(), "Server Error", "500", ""); } } + @PreAuthorize("hasAuthority('ROLE_ADMIN') or hasAuthority('ROLE_TEACHER')") @PatchMapping(ResourceManagementURI.ASSIGNMENT+ResourceManagementURI.ID+ResourceManagementURI.PUBLISH) public ResponseEntity updateAssignmentPublishedStatus(@PathVariable UUID id, @RequestParam Boolean isPublished) { diff --git a/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/QuizController.java b/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/QuizController.java index 33d4be8..8b2efe6 100644 --- a/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/QuizController.java +++ b/quiz-management/quiz-management-all/src/main/java/com/itgura/controller/QuizController.java @@ -2,7 +2,6 @@ import com.itgura.dto.AppRequest; import com.itgura.dto.AppResponse; -import com.itgura.request.CreateAssignmentRequest; import com.itgura.request.CreateQuizRequest; import com.itgura.request.QuizSubmissionRequest; import com.itgura.response.QuizResponse; @@ -18,7 +17,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.QUIZ_SERVICE) public class QuizController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/AnnouncementController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/AnnouncementController.java index 20287b8..e735a3d 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/AnnouncementController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/AnnouncementController.java @@ -14,7 +14,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class AnnouncementController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/ClassController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/ClassController.java index 8e43387..fdcd88b 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/ClassController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/ClassController.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class ClassController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/ContentController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/ContentController.java index 619d66c..ea5db9e 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/ContentController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/ContentController.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/LessonController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/LessonController.java index 33043d1..288847d 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/LessonController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/LessonController.java @@ -16,7 +16,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class LessonController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialController.java index e3a4b18..37e77e8 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialController.java @@ -13,7 +13,7 @@ import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class MaterialController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialTypeController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialTypeController.java index 55f3a80..615ece2 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialTypeController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/MaterialTypeController.java @@ -14,7 +14,7 @@ import java.util.List; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class MaterialTypeController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/SessionController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/SessionController.java index 16100ba..66dd600 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/SessionController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/SessionController.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.UUID; -@CrossOrigin(origins = "*", allowedHeaders = "*") + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class SessionController { diff --git a/resource-management/resource-management-all/src/main/java/com/itgura/controller/UserController.java b/resource-management/resource-management-all/src/main/java/com/itgura/controller/UserController.java index af30510..11e149d 100644 --- a/resource-management/resource-management-all/src/main/java/com/itgura/controller/UserController.java +++ b/resource-management/resource-management-all/src/main/java/com/itgura/controller/UserController.java @@ -1,4 +1,5 @@ package com.itgura.controller; + import com.itgura.dto.AppResponse; import com.itgura.exception.ValueNotExistException; import com.itgura.request.UserDetailRequest; @@ -9,8 +10,10 @@ import com.itgura.util.URIPrefix; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; -@CrossOrigin(origins = "*", allowedHeaders = "*") + + @RestController @RequestMapping(URIPrefix.API + URIPrefix.V1 + URIPathVariable.RESOURCE_MANAGEMENT) public class UserController { @@ -22,7 +25,7 @@ public AppResponse getUserDetails(){ UserDetailsResponse response = userService.findUser(); return AppResponse.ok(response); } - + catch (Exception e) { return AppResponse.error(null, e.getMessage(), "Server Error", "500", ""); } @@ -45,4 +48,4 @@ public AppResponse updateUser(@RequestBody @Valid UserDetai return AppResponse.error(null, e.getMessage(), "Server Error", "500", ""); } } -} \ No newline at end of file +} diff --git a/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/MaterialServiceImpl.java b/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/MaterialServiceImpl.java index bbd1f8e..c883012 100644 --- a/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/MaterialServiceImpl.java +++ b/resource-management/resource-management-service/src/main/java/com/itgura/service/impl/MaterialServiceImpl.java @@ -172,6 +172,8 @@ public String getVideoMaterialSignedUrl(SignedUrlRequest signedUrlRequest) throw .keyPairId(keyPairId) .privateKey(new ClassPathResource(privateKeyPath).getFile().toPath()) .build(); + + SignedUrl signedUrl = cloudFrontUtilities.getSignedUrlWithCustomPolicy(customSignerRequest); return signedUrl.url();