From 8d55ee79e168e1b34b49eecd41ca7a5dab418bfc Mon Sep 17 00:00:00 2001 From: Mithun James Date: Tue, 17 Jun 2025 13:53:05 +0530 Subject: [PATCH 1/2] Copy env variables to new docker properties for deploying in Linux/Docker (#57) * feat: add Dockerfile and update pom.xml plugin for repackage * chore: update Dockerfile and add seperate docker properties file * fix: move redis host to env variable --------- Co-authored-by: Suraj Co-authored-by: Suraj <123288511+Suraj-kumar00@users.noreply.github.com> Co-authored-by: Mithun James <1007084+drtechie@users.noreply.github.com> --- .settings/org.eclipse.jdt.core.prefs | 11 +++++++++ Dockerfile | 22 +++++++++++++++++ pom.xml | 13 +++++++++- src/main/environment/104_ci.properties | 2 +- src/main/environment/104_docker.properties | 28 ++++++++++++++++++++++ 5 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 Dockerfile create mode 100644 src/main/environment/104_docker.properties diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index d23d1d6..5ac5ec7 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,9 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 @@ -7,7 +12,13 @@ org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled org.eclipse.jdt.core.compiler.processAnnotations=enabled org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=17 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f99697f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +# --- Stage 1: Build the application using Maven --- +FROM maven:3.9.6-eclipse-temurin-17 AS build + +WORKDIR /app + +COPY . . + +# Build the application while caching Maven dependencies to speed up future builds +RUN --mount=type=cache,target=/root/.m2 \ + mvn clean package -DENV_VAR=docker -DskipTests -Dgit.skip=true + +# --- Stage 2: Run the application with a minimal JRE image --- +FROM eclipse-temurin:17-jre + +WORKDIR /app + +# Copy the built WAR file from the build stage +COPY --from=build /app/target/*.war app.war + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "app.war"] diff --git a/pom.xml b/pom.xml index b327141..8027e14 100644 --- a/pom.xml +++ b/pom.xml @@ -400,7 +400,18 @@ - + + org.springframework.boot + spring-boot-maven-plugin + 3.2.2 + + + + repackage + + + + diff --git a/src/main/environment/104_ci.properties b/src/main/environment/104_ci.properties index 2443c86..657944e 100644 --- a/src/main/environment/104_ci.properties +++ b/src/main/environment/104_ci.properties @@ -15,7 +15,7 @@ secondary.datasource.driver-class-name=com.mysql.cj.jdbc.Driver common-url=@env.COMMON_API_BASE_URL@ ### Redis IP -spring.redis.host=localhost +spring.redis.host=@env.REDIS_HOST@ #ELK logging file name logging.path=logs/ diff --git a/src/main/environment/104_docker.properties b/src/main/environment/104_docker.properties new file mode 100644 index 0000000..c6a56c4 --- /dev/null +++ b/src/main/environment/104_docker.properties @@ -0,0 +1,28 @@ +# local env +# DB Connections +## Primary db +spring.datasource.url=${DATABASE_URL} +spring.datasource.username=${DATABASE_USERNAME} +spring.datasource.password=${DATABASE_PASSWORD} +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +secondary.datasource.username=${REPORTING_DATABASE_USERNAME} +secondary.datasource.password=${REPORTING_DATABASE_PASSWORD} +secondary.datasource.url=${REPORTING_DATABASE_URL} +secondary.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +# Common Config +common-url=${COMMON_API_BASE_URL} + +### Redis IP +spring.redis.host=${REDIS_HOST} + +#ELK logging file name +logging.file.name=${HELPLINE104_API_LOGGING_FILE_NAME} +jwt.secret=${JWT_SECRET_KEY} +springdoc.api-docs.enabled=${SWAGGER_DOC_ENABLED} +springdoc.swagger-ui.enabled=${SWAGGER_DOC_ENABLED} + + +sendSMSUrl= ${COMMON_API_BASE_URL}sms/sendSMS +sendEmailGeneralUrl = ${COMMON_API_BASE_URL}emailController/sendEmailGeneral \ No newline at end of file From 7f1bfa62590883af237310f995e4422bce2def98 Mon Sep 17 00:00:00 2001 From: Vishwanath Balkur <118195001+vishwab1@users.noreply.github.com> Date: Wed, 18 Jun 2025 10:13:02 +0530 Subject: [PATCH 2/2] fix: cors erro fix and cross origin remove (#59) --- src/main/environment/104_ci.properties | 2 + src/main/environment/104_example.properties | 4 +- .../iemr/helpline104/config/CorsConfig.java | 28 ++++ .../controller/IMRMMR/IMRMMRController.java | 5 - .../balVivha/BalVivahController.java | 3 - .../BeneficiaryCallController.java | 33 ++-- .../BloodComponentController.java | 6 +- .../bloodRequest/BloodRequestController.java | 6 - .../CallQAMappingController.java | 2 - ...lpline104BeneficiaryHistoryController.java | 3 - .../ClinicalDecisionSupportController.java | 4 - .../covidMaster/CovidMasterController.java | 6 +- .../DirectoryServicesController.java | 4 +- .../controller/disease/DiseaseController.java | 6 - .../DiseaseScreeningController.java | 2 - .../drugGroup/DrugGroupController.java | 23 ++- .../EpidemicOutbreakController.java | 5 +- .../feedback/FeedbackController.java | 4 - .../feedbackType/FeedbackTypeController.java | 1 - .../FoodSafetyComplaintController.java | 5 +- .../HealthCareWorkerTypeController.java | 4 +- .../controller/hihl/HIHLController.java | 2 - .../location/CountryCityController.java | 2 - .../location/LocationController.java | 6 - .../OrganDonationController.java | 6 - .../prescription/PrescriptionController.java | 4 - .../controller/scheme/SchemeController.java | 2 - .../SecondaryCRMReports.java | 51 ++---- .../ServiceImprovementOfficerController.java | 1 - .../controller/snomedct/SnomedController.java | 2 - .../controller/users/IEMRAdminController.java | 8 - .../controller/version/VersionController.java | 3 +- .../helpline104/service/CTI/CTIService.java | 3 +- .../iemr/helpline104/utils/FilterConfig.java | 25 ++- .../utils/JwtUserIdValidationFilter.java | 155 +++++++++++------- 35 files changed, 200 insertions(+), 226 deletions(-) create mode 100644 src/main/java/com/iemr/helpline104/config/CorsConfig.java diff --git a/src/main/environment/104_ci.properties b/src/main/environment/104_ci.properties index 657944e..c734768 100644 --- a/src/main/environment/104_ci.properties +++ b/src/main/environment/104_ci.properties @@ -26,3 +26,5 @@ springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@ sendSMSUrl= @env.COMMON_API_BASE_URL@sms/sendSMS sendEmailGeneralUrl = @env.COMMON_API_BASE_URL@emailController/sendEmailGeneral + +cors.allowed-origins=@env.CORS_ALLOWED_ORIGINS@ diff --git a/src/main/environment/104_example.properties b/src/main/environment/104_example.properties index 8ca4114..8c6b41f 100644 --- a/src/main/environment/104_example.properties +++ b/src/main/environment/104_example.properties @@ -22,4 +22,6 @@ spring.redis.host=localhost jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret #If both properties are set, only logging.file.name takes effect. logging.path=logs/ -logging.file.name=logs/helpline104-api.log \ No newline at end of file +logging.file.name=logs/helpline104-api.log + +cors.allowed-origins=http://localhost:* \ No newline at end of file diff --git a/src/main/java/com/iemr/helpline104/config/CorsConfig.java b/src/main/java/com/iemr/helpline104/config/CorsConfig.java new file mode 100644 index 0000000..520f113 --- /dev/null +++ b/src/main/java/com/iemr/helpline104/config/CorsConfig.java @@ -0,0 +1,28 @@ +package com.iemr.helpline104.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import java.util.Arrays; +import org.springframework.beans.factory.annotation.Value; + +@Configuration +public class CorsConfig implements WebMvcConfigurer { + + @Value("${cors.allowed-origins}") + private String allowedOrigins; + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns( + Arrays.stream(allowedOrigins.split(",")) + .map(String::trim) + .toArray(String[]::new)) + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") + .allowedHeaders("Content-Type", "Authorization") + .exposedHeaders("Authorization") + .allowCredentials(true) + .maxAge(3600); + } +} diff --git a/src/main/java/com/iemr/helpline104/controller/IMRMMR/IMRMMRController.java b/src/main/java/com/iemr/helpline104/controller/IMRMMR/IMRMMRController.java index f7334ca..64195e8 100644 --- a/src/main/java/com/iemr/helpline104/controller/IMRMMR/IMRMMRController.java +++ b/src/main/java/com/iemr/helpline104/controller/IMRMMR/IMRMMRController.java @@ -44,7 +44,6 @@ import io.swagger.v3.oas.annotations.Operation; - @RequestMapping(value = "/beneficiary") @RestController public class IMRMMRController { @@ -54,7 +53,6 @@ public class IMRMMRController { @Autowired private IMRMMRService imrmmrService; - @CrossOrigin() @Operation(summary = "Save IMR MMR") @PostMapping(value = "/saveIMRMMR", headers = "Authorization", produces = { "application/json" }) @@ -78,7 +76,6 @@ public String saveIMRMMR(@RequestBody String request, return response.toString(); } - @CrossOrigin() @Operation(summary = "Fetch support services") @GetMapping(value = "/fetchimrmmrmasters", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String fetchSupportServices() { @@ -105,7 +102,6 @@ public String fetchSupportServices() { return response.toString(); } - @CrossOrigin() @Operation(summary = "Feedback request") @PostMapping(value = "/getIMRMMRList", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String feedbackReuest(@RequestBody String request) { @@ -123,7 +119,6 @@ public String feedbackReuest(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Update IMR MMR complaint") @PostMapping(value = "/update/ImrMmrComplaint", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String updateImrMmrComplaint(@RequestBody String request) { diff --git a/src/main/java/com/iemr/helpline104/controller/balVivha/BalVivahController.java b/src/main/java/com/iemr/helpline104/controller/balVivha/BalVivahController.java index e2e0df1..4659b38 100644 --- a/src/main/java/com/iemr/helpline104/controller/balVivha/BalVivahController.java +++ b/src/main/java/com/iemr/helpline104/controller/balVivha/BalVivahController.java @@ -45,7 +45,6 @@ public class BalVivahController { @Autowired private BalVivahComplaintService balVivahComplaintService; - @CrossOrigin() @Operation(summary = "Save bal vivah complaint") @PostMapping(value = "/saveBalVivahComplaint", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String balVivahComplaint(@RequestBody String request, HttpServletRequest httpRequest) { @@ -60,7 +59,6 @@ public String balVivahComplaint(@RequestBody String request, HttpServletRequest return output.toString(); } - @CrossOrigin() @Operation(summary = "Get bal vivah list") @PostMapping(value = "/getBalVivahList", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String feedbackReuest(@RequestBody String request) { @@ -79,7 +77,6 @@ public String feedbackReuest(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Update bal vivah complaint") @PostMapping(value = "/update/BalVivahComplaint", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String updateBalVivahComplaint(@RequestBody String request) { diff --git a/src/main/java/com/iemr/helpline104/controller/beneficiarycall/BeneficiaryCallController.java b/src/main/java/com/iemr/helpline104/controller/beneficiarycall/BeneficiaryCallController.java index b5bcdba..49dd20b 100644 --- a/src/main/java/com/iemr/helpline104/controller/beneficiarycall/BeneficiaryCallController.java +++ b/src/main/java/com/iemr/helpline104/controller/beneficiarycall/BeneficiaryCallController.java @@ -64,7 +64,6 @@ public void setBeneficiaryCallService(BeneficiaryCallService beneficiaryCallServ this.beneficiaryCallService = beneficiaryCallService; } - @CrossOrigin() @Operation(summary = "Stores callerID to the specific beneficiary who are on call") @PostMapping(value = "/startCall", headers = "Authorization") public String startCall( @@ -85,37 +84,34 @@ public String startCall( return output.toString(); } - @CrossOrigin() @Operation(summary = "Update beneficiary reg id to the caller id") @PostMapping(value = "update/beneficiaryCallID", headers = "Authorization") public String updateBeneficiaryIDInCall( - @Parameter(description = "{\"callID\":\"integer\", \"beneficiaryRegID\":\"long\"}") @RequestBody String beneficiaryCall) { - - OutputResponse output = new OutputResponse(); - Integer startedCall = null; - try { - BeneficiaryCall beneficiarycall = inputMapper.gson().fromJson(beneficiaryCall, BeneficiaryCall.class); + @Parameter(description = "{\"callID\":\"integer\", \"beneficiaryRegID\":\"long\"}") @RequestBody String beneficiaryCall) { + + OutputResponse output = new OutputResponse(); + Integer startedCall = null; + try { + BeneficiaryCall beneficiarycall = inputMapper.gson().fromJson(beneficiaryCall, BeneficiaryCall.class); if (null != beneficiarycall.getBeneficiaryRegID()) { startedCall = beneficiaryCallService.updateBeneficiaryIDInCall(beneficiarycall.getBenCallID(), beneficiarycall.getBeneficiaryRegID()); output.setResponse(startedCall.toString()); - }else { + } else { output.setResponse("Update skipped : BeneficiaryRegID is null"); } - logger.info("updateBeneficiaryIDInCall was called successfully"); - } catch (Exception e) { - logger.error("updateBeneficiaryIDInCall failed with error " + e.getMessage(), e); - output.setError(e); + logger.info("updateBeneficiaryIDInCall was called successfully"); + } catch (Exception e) { + logger.error("updateBeneficiaryIDInCall failed with error " + e.getMessage(), e); + output.setError(e); - } + } - logger.info("updateBeneficiaryIDInCall completed"); + logger.info("updateBeneficiaryIDInCall completed"); - return output.toString(); + return output.toString(); } - - @CrossOrigin @Operation(summary = "Fetch services available in the 104 helpline") @PostMapping(value = "/get/services", headers = "Authorization") public String getServices( @@ -138,7 +134,6 @@ public String getServices( return output.toString(); } - @CrossOrigin() @Operation(summary = "Set service history") @PostMapping(value = "set/callHistory", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String setServiceHistory(@RequestBody String request) { diff --git a/src/main/java/com/iemr/helpline104/controller/bloodComponent/BloodComponentController.java b/src/main/java/com/iemr/helpline104/controller/bloodComponent/BloodComponentController.java index d972349..b321606 100644 --- a/src/main/java/com/iemr/helpline104/controller/bloodComponent/BloodComponentController.java +++ b/src/main/java/com/iemr/helpline104/controller/bloodComponent/BloodComponentController.java @@ -47,11 +47,10 @@ public class BloodComponentController { @Autowired private BloodComponentService bloodComponentService; - @CrossOrigin @Operation(summary = "Save blood component details") @PostMapping(value = "/save/bloodComponentDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveBloodComponentDetails( - @Parameter(description = "{\"component\":\"String\",\"componentDesc\":\"String\",\"deleted\":\"boolean\",\"createdBy\":\"String\"}") @RequestBody String request) { + @Parameter(description = "{\"component\":\"String\",\"componentDesc\":\"String\",\"deleted\":\"boolean\",\"createdBy\":\"String\"}") @RequestBody String request) { OutputResponse output = new OutputResponse(); try { M_Component m_component = inputMapper.gson().fromJson(request, M_Component.class); @@ -67,11 +66,10 @@ public String saveBloodComponentDetails( return output.toString(); } - @CrossOrigin @Operation(summary = "Fetch blood component details") @PostMapping(value = "/get/bloodComponentDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getBloodComponentDetails( - @Parameter(description = "{\"componentID\":\"Integer\"}") @RequestBody String request) { + @Parameter(description = "{\"componentID\":\"Integer\"}") @RequestBody String request) { OutputResponse output = new OutputResponse(); try { diff --git a/src/main/java/com/iemr/helpline104/controller/bloodRequest/BloodRequestController.java b/src/main/java/com/iemr/helpline104/controller/bloodRequest/BloodRequestController.java index 68530fd..d28e83d 100644 --- a/src/main/java/com/iemr/helpline104/controller/bloodRequest/BloodRequestController.java +++ b/src/main/java/com/iemr/helpline104/controller/bloodRequest/BloodRequestController.java @@ -55,7 +55,6 @@ public class BloodRequestController { @Autowired private BloodComponentTypeService componentTypeService; - @CrossOrigin @Operation(summary = "Save blood request details") @PostMapping(value = "/save/bloodRequestDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveBloodRequestDetails(@RequestBody String request) { @@ -77,7 +76,6 @@ public String saveBloodRequestDetails(@RequestBody String request) { return output.toString(); } - @CrossOrigin @Operation(summary = "Get blood request details") @PostMapping(value = "/get/bloodRequestDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getbloodRequestDetails( @@ -102,7 +100,6 @@ public String getbloodRequestDetails( return output.toString(); } - @CrossOrigin @Operation(summary = "Get blood component types") @PostMapping(value = "/get/bloodComponentTypes", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getBloodComponentTypes() { @@ -120,7 +117,6 @@ public String getBloodComponentTypes() { return output.toString(); } - @CrossOrigin @Operation(summary = "Get blood groups") @PostMapping(value = "/get/bloodGroups", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getBloodGroups() { @@ -138,7 +134,6 @@ public String getBloodGroups() { return output.toString(); } - @CrossOrigin @Operation(summary = "Get blood bank URL") @PostMapping(value = "/get/bloodBankURL", headers = "Authorization") public String getBloodBankURL( @@ -163,7 +158,6 @@ public String getBloodBankURL( return output.toString(); } - @CrossOrigin @Operation(summary = "Save blood bank URL") @PostMapping(value = "/save/bloodBankURL", headers = "Authorization") public String saveBloodBankURL( diff --git a/src/main/java/com/iemr/helpline104/controller/callqamapping/CallQAMappingController.java b/src/main/java/com/iemr/helpline104/controller/callqamapping/CallQAMappingController.java index e15721b..cd48135 100644 --- a/src/main/java/com/iemr/helpline104/controller/callqamapping/CallQAMappingController.java +++ b/src/main/java/com/iemr/helpline104/controller/callqamapping/CallQAMappingController.java @@ -48,7 +48,6 @@ public class CallQAMappingController { @Autowired public CallqamappingService callqamappingService; - @CrossOrigin @Operation(summary = "Save call qa mapping") @PostMapping(value = "/save/callqamapping", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveCallqamapping(@RequestBody String request) { @@ -69,7 +68,6 @@ public String saveCallqamapping(@RequestBody String request) { return output.toString(); } - @CrossOrigin @Operation(summary = "Fetch questions and answers given by beneficiary") @PostMapping(value = "/get/CDIqamapping", headers = "Authorization") public String getCDIqamapping( diff --git a/src/main/java/com/iemr/helpline104/controller/casesheet/Helpline104BeneficiaryHistoryController.java b/src/main/java/com/iemr/helpline104/controller/casesheet/Helpline104BeneficiaryHistoryController.java index 33c6fb3..a9b8d47 100644 --- a/src/main/java/com/iemr/helpline104/controller/casesheet/Helpline104BeneficiaryHistoryController.java +++ b/src/main/java/com/iemr/helpline104/controller/casesheet/Helpline104BeneficiaryHistoryController.java @@ -48,7 +48,6 @@ public class Helpline104BeneficiaryHistoryController { @Autowired private H104BenHistoryService h104BenHistoryService; - @CrossOrigin @Operation(summary = "Retrieves case record") @PostMapping(value = "/getBenCaseSheet", headers = "Authorization") public String getBenCaseSheet( @@ -70,7 +69,6 @@ public String getBenCaseSheet( return output.toString(); } - @CrossOrigin @Operation(summary = "Stores case record") @PostMapping(value = "/save/benCaseSheet", headers = "Authorization") public String saveBenCaseSheet( @@ -101,7 +99,6 @@ public String saveBenCaseSheet( return output.toString(); } - @CrossOrigin @Operation(summary = "Retrieves present case record") @PostMapping(value = "/getPresentCaseSheet", headers = "Authorization") public String getPresentCaseSheet( diff --git a/src/main/java/com/iemr/helpline104/controller/cdss/ClinicalDecisionSupportController.java b/src/main/java/com/iemr/helpline104/controller/cdss/ClinicalDecisionSupportController.java index 8110cd2..1fcf0a7 100644 --- a/src/main/java/com/iemr/helpline104/controller/cdss/ClinicalDecisionSupportController.java +++ b/src/main/java/com/iemr/helpline104/controller/cdss/ClinicalDecisionSupportController.java @@ -46,7 +46,6 @@ public class ClinicalDecisionSupportController { private CDSSService cDSSService; private Logger logger = LoggerFactory.getLogger(ClinicalDecisionSupportController.class); - @CrossOrigin() @Operation(summary = "Get symptoms") @PostMapping(value = "/Symptoms", produces = "application/json", headers = "Authorization") public String getSymptomsPost(@RequestBody SymptomsWrapper symptomsDetails) { @@ -73,7 +72,6 @@ public String getSymptomsPost(@RequestBody SymptomsWrapper symptomsDetails) { } - @CrossOrigin() @Operation(summary = "Get questions by symptom, age and gender") @PostMapping(value = "/getQuestions", produces = "application/json", headers = "Authorization") public String getQuestion(@RequestBody SymptomsWrapper symptomsDetails) { @@ -99,7 +97,6 @@ public String getQuestion(@RequestBody SymptomsWrapper symptomsDetails) { } - @CrossOrigin() @Operation(summary = "Get result based on compliant id") @PostMapping(value = "/getResult", produces = "application/json", headers = "Authorization") public String getResult(@RequestBody String userAnswer) { @@ -125,7 +122,6 @@ public String getResult(@RequestBody String userAnswer) { } - @CrossOrigin() @Operation(summary = "Save symptom") @PostMapping(value = "/saveSymptom", produces = "application/json", headers = "Authorization") public String saveSymptom(@RequestBody String inputData) { diff --git a/src/main/java/com/iemr/helpline104/controller/covidMaster/CovidMasterController.java b/src/main/java/com/iemr/helpline104/controller/covidMaster/CovidMasterController.java index e1b5882..d78ea5e 100644 --- a/src/main/java/com/iemr/helpline104/controller/covidMaster/CovidMasterController.java +++ b/src/main/java/com/iemr/helpline104/controller/covidMaster/CovidMasterController.java @@ -34,7 +34,6 @@ import io.swagger.v3.oas.annotations.Operation; -@CrossOrigin @RestController @RequestMapping(value = "/master", headers = "Authorization") @@ -44,7 +43,7 @@ public class CovidMasterController { @Autowired private CovidMasterService covidMasterService; - @Operation(summary= "Master data for COVID patient") + @Operation(summary = "Master data for COVID patient") @GetMapping(value = { "/patient/covidDetails/{providerServiceMapID}" }, produces = MediaType.APPLICATION_JSON) public String patientAppMasterData(@PathVariable("providerServiceMapID") Integer providerServiceMapID) { @@ -56,8 +55,7 @@ public String patientAppMasterData(@PathVariable("providerServiceMapID") Integer return response.toString(); } - @CrossOrigin - @Operation(summary= "Save COVID data") + @Operation(summary = "Save COVID data") @PostMapping({ "/save/covidScreeningData" }) public String saveBenCovidDoctorData(@RequestBody String requestObj, @RequestHeader(value = "Authorization") String Authorization) { diff --git a/src/main/java/com/iemr/helpline104/controller/directory/DirectoryServicesController.java b/src/main/java/com/iemr/helpline104/controller/directory/DirectoryServicesController.java index e1bea8a..a678536 100644 --- a/src/main/java/com/iemr/helpline104/controller/directory/DirectoryServicesController.java +++ b/src/main/java/com/iemr/helpline104/controller/directory/DirectoryServicesController.java @@ -27,7 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.CrossOrigin; + import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -50,7 +50,6 @@ public class DirectoryServicesController { @Autowired private DirectoryServiceService directoryServiceService; - @CrossOrigin @Operation(summary = "Retrieve directory search history") @RequestMapping(value = "/getdirectorySearchHistory", method = RequestMethod.POST, headers = "Authorization") public String getBenDirectoryHistory( @@ -72,7 +71,6 @@ public String getBenDirectoryHistory( return output.toString(); } - @CrossOrigin @Operation(summary = "Store directory serach history") @RequestMapping(value = "/save/directorySearchHistory", method = RequestMethod.POST, headers = "Authorization") public String directorySearchHistory( diff --git a/src/main/java/com/iemr/helpline104/controller/disease/DiseaseController.java b/src/main/java/com/iemr/helpline104/controller/disease/DiseaseController.java index 5f0f08f..2a787f8 100644 --- a/src/main/java/com/iemr/helpline104/controller/disease/DiseaseController.java +++ b/src/main/java/com/iemr/helpline104/controller/disease/DiseaseController.java @@ -39,7 +39,6 @@ public class DiseaseController { @Autowired DiseaseService diseaseService; - @CrossOrigin() @Operation(summary = "Save disease") @PostMapping(value = "/saveDisease", headers = "Authorization", produces = { "application/json" }) @@ -57,7 +56,6 @@ public String saveDisease(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Delete disease") @PostMapping(value = "/deleteDisease", headers = "Authorization", produces = { "application/json" }) @@ -75,7 +73,6 @@ public String deleteDisease(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Get diseases") @PostMapping(value = "/getDisease", headers = "Authorization", produces = { "application/json" }) @@ -93,7 +90,6 @@ public String getDisease(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Update disease") @PostMapping(value = "/updateDisease", headers = "Authorization", produces = { "application/json" }) @@ -111,7 +107,6 @@ public String updateDisease(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Get available disease") @PostMapping(value = "/getAvailableDiseases", headers = "Authorization", produces = { "application/json" }) public String getAvailableDiseases() { @@ -128,7 +123,6 @@ public String getAvailableDiseases() { return response.toString(); } - @CrossOrigin() @Operation(summary = "Get disease by id") @PostMapping(value = "/getDiseasesByID", headers = "Authorization", produces = { "application/json" }) diff --git a/src/main/java/com/iemr/helpline104/controller/diseaseScreening/DiseaseScreeningController.java b/src/main/java/com/iemr/helpline104/controller/diseaseScreening/DiseaseScreeningController.java index 40e6f5c..8b8c2ef 100644 --- a/src/main/java/com/iemr/helpline104/controller/diseaseScreening/DiseaseScreeningController.java +++ b/src/main/java/com/iemr/helpline104/controller/diseaseScreening/DiseaseScreeningController.java @@ -57,7 +57,6 @@ public class DiseaseScreeningController { @Autowired private QuestionScoreService questionScoreService; - @CrossOrigin @Operation(summary = "Fetch disease screening questions") @PostMapping(value = "/get/questions", headers = "Authorization") public String fetchQuestions( @@ -81,7 +80,6 @@ public String fetchQuestions( return output.toString(); } - @CrossOrigin @Operation(summary = "Fetch disease screening answers") @PostMapping(value = "/get/answers", headers = "Authorization") public String fetchAnswers(@Parameter(description = "{\"questionID\":\"integer\"}") @RequestBody String request) { diff --git a/src/main/java/com/iemr/helpline104/controller/drugGroup/DrugGroupController.java b/src/main/java/com/iemr/helpline104/controller/drugGroup/DrugGroupController.java index 119ea6f..13294f6 100644 --- a/src/main/java/com/iemr/helpline104/controller/drugGroup/DrugGroupController.java +++ b/src/main/java/com/iemr/helpline104/controller/drugGroup/DrugGroupController.java @@ -53,10 +53,10 @@ public class DrugGroupController { @Autowired private DrugGroupService drugGroupService; - @CrossOrigin - @Operation(summary= "Fetch drug groups") + @Operation(summary = "Fetch drug groups") @PostMapping(value = "/get/drugGroups", headers = "Authorization") - public String getDrugGroups(@Parameter(description = "{\"serviceProviderID\":\"integer\"}") @RequestBody String request) { + public String getDrugGroups( + @Parameter(description = "{\"serviceProviderID\":\"integer\"}") @RequestBody String request) { OutputResponse output = new OutputResponse(); try { M_DrugGroup m_DrugGroup = inputMapper.gson().fromJson(request, M_DrugGroup.class); @@ -74,10 +74,10 @@ public String getDrugGroups(@Parameter(description = "{\"serviceProviderID\":\"i return output.toString(); } - @CrossOrigin - @Operation(summary= "Fetch drug list") + @Operation(summary = "Fetch drug list") @PostMapping(value = "/get/drugList", headers = "Authorization") - public String getDrugList(@Parameter(description = "{\"providerServiceMapID\":\"integer\"}") @RequestBody String request) { + public String getDrugList( + @Parameter(description = "{\"providerServiceMapID\":\"integer\"}") @RequestBody String request) { OutputResponse output = new OutputResponse(); try { M_104drugmapping m_104drugmapping = inputMapper.gson().fromJson(request, M_104drugmapping.class); @@ -99,8 +99,7 @@ public String getDrugList(@Parameter(description = "{\"providerServiceMapID\":\" return output.toString(); } - @CrossOrigin - @Operation(summary= "Fetch drug frequency details") + @Operation(summary = "Fetch drug frequency details") @PostMapping(value = "/get/drugFrequency", headers = "Authorization") public String getDrugFrequency() { OutputResponse output = new OutputResponse(); @@ -117,8 +116,7 @@ public String getDrugFrequency() { return output.toString(); } - @CrossOrigin - @Operation(summary= "Fetch drug strength details") + @Operation(summary = "Fetch drug strength details") @PostMapping(value = "/get/drugStrength", headers = "Authorization") public String getDrugStrength( @Parameter(description = "{\"serviceProviderID\":\"integer\"}") @RequestBody String request) { @@ -128,7 +126,7 @@ public String getDrugStrength( M_DrugGroup m_DrugGroup = inputMapper.gson().fromJson(request, M_DrugGroup.class); ArrayList drugStrength = drugGroupService.getDrugStrength(m_DrugGroup.getServiceProviderID()); - + output.setResponse(drugStrength.toString()); } catch (Exception e) { @@ -139,8 +137,7 @@ public String getDrugStrength( return output.toString(); } - @CrossOrigin - @Operation(summary= "Fetch drug name list") + @Operation(summary = "Fetch drug name list") @PostMapping(value = "/getDrugDetailList", headers = "Authorization") public String getDrugNameList( @Parameter(description = "{\"providerServiceMapID\":\"integer\"}") @RequestBody String request) { diff --git a/src/main/java/com/iemr/helpline104/controller/epidemicOutbreak/EpidemicOutbreakController.java b/src/main/java/com/iemr/helpline104/controller/epidemicOutbreak/EpidemicOutbreakController.java index b5bfe54..28928a4 100644 --- a/src/main/java/com/iemr/helpline104/controller/epidemicOutbreak/EpidemicOutbreakController.java +++ b/src/main/java/com/iemr/helpline104/controller/epidemicOutbreak/EpidemicOutbreakController.java @@ -27,7 +27,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.CrossOrigin; + import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -51,7 +51,6 @@ public class EpidemicOutbreakController { @Autowired private EpidemicOutbreakService epidemicOutbreakService; - @CrossOrigin @Operation(summary = "Store epidemic outbreak complaint") @RequestMapping(value = "/save/epidemicOutbreakComplaint", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveEpidemicOutbreakComplaint( @@ -74,7 +73,6 @@ public String saveEpidemicOutbreakComplaint( return output.toString(); } - @CrossOrigin @Operation(summary = "Fetch epidemic outbreak complaints") @RequestMapping(value = "/get/epidemicOutbreakComplaint", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getEpidemicOutbreakComplaint( @@ -101,7 +99,6 @@ public String getEpidemicOutbreakComplaint( return output.toString(); } - @CrossOrigin @Operation(summary = "Update epidemic outbreak complaint") @RequestMapping(value = "/update/epidemicOutbreakComplaint", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String updateEpidemicOutbreakComplaint( diff --git a/src/main/java/com/iemr/helpline104/controller/feedback/FeedbackController.java b/src/main/java/com/iemr/helpline104/controller/feedback/FeedbackController.java index 6cf0d1f..593f062 100644 --- a/src/main/java/com/iemr/helpline104/controller/feedback/FeedbackController.java +++ b/src/main/java/com/iemr/helpline104/controller/feedback/FeedbackController.java @@ -58,7 +58,6 @@ public void setFeedbackService(FeedbackService feedbackService) { this.feedbackService = feedbackService; } - @CrossOrigin() @Operation(summary = "Fetch feedback request") @PostMapping(value = "/getfeedbacklist", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String feedbackReuest(@RequestBody String request) { @@ -75,7 +74,6 @@ public String feedbackReuest(@RequestBody String request) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Get feedback by post") @PostMapping(value = "/getfeedback/{feedbackID}", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String getFeedbackByPost(@PathVariable("feedbackID") int feedbackID) { @@ -91,7 +89,6 @@ public String getFeedbackByPost(@PathVariable("feedbackID") int feedbackID) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Update feedback") @PostMapping(value = "/updatefeedback", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String updateFeedback(@RequestBody String feedbackDetailsOBJ) { @@ -114,7 +111,6 @@ public String updateFeedback(@RequestBody String feedbackDetailsOBJ) { return response.toString(); } - @CrossOrigin() @Operation(summary = "Save beneficiary feedback") @PostMapping(value = "/saveBenFeedback", produces = MediaType.APPLICATION_JSON, headers = "Authorization") public String saveBenFeedback(@RequestBody String feedbackRequest, HttpServletRequest request) { diff --git a/src/main/java/com/iemr/helpline104/controller/feedbackType/FeedbackTypeController.java b/src/main/java/com/iemr/helpline104/controller/feedbackType/FeedbackTypeController.java index 1ea5150..d4c7d90 100644 --- a/src/main/java/com/iemr/helpline104/controller/feedbackType/FeedbackTypeController.java +++ b/src/main/java/com/iemr/helpline104/controller/feedbackType/FeedbackTypeController.java @@ -46,7 +46,6 @@ public class FeedbackTypeController { @Autowired private FeedbackTypeService feedbackTypeService; - @CrossOrigin @Operation(summary = "Provides nature of complaints") @PostMapping(value = "/get/natureOfComplaintTypes", headers = "Authorization") public String getNatureOfComplaintTypes( diff --git a/src/main/java/com/iemr/helpline104/controller/foodSafetyComplaint/FoodSafetyComplaintController.java b/src/main/java/com/iemr/helpline104/controller/foodSafetyComplaint/FoodSafetyComplaintController.java index 226311f..10c07eb 100644 --- a/src/main/java/com/iemr/helpline104/controller/foodSafetyComplaint/FoodSafetyComplaintController.java +++ b/src/main/java/com/iemr/helpline104/controller/foodSafetyComplaint/FoodSafetyComplaintController.java @@ -50,7 +50,6 @@ public class FoodSafetyComplaintController { @Autowired private FoodSafetyCopmlaintService foodSafetyCopmlaintService; - @CrossOrigin @Operation(summary = "Stores food safety complaint details") @PostMapping(value = "/save/foodComplaintDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveFoodComplaintDetails( @@ -65,7 +64,8 @@ public String saveFoodComplaintDetails( objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); T_FoodSafetyCopmlaint t_foodSafetyCopmlaint = objectMapper.readValue(request, T_FoodSafetyCopmlaint.class); - // logger.info("saveFoodComplaintDetails request " + t_foodSafetyCopmlaint.toString()); + // logger.info("saveFoodComplaintDetails request " + + // t_foodSafetyCopmlaint.toString()); T_FoodSafetyCopmlaint foodComplaint; @@ -80,7 +80,6 @@ public String saveFoodComplaintDetails( return output.toString(); } - @CrossOrigin @Operation(summary = "Provides food safety complaints history") @PostMapping(value = "/get/foodComplaintDetails", headers = "Authorization") public String getFoodComplaintDetails( diff --git a/src/main/java/com/iemr/helpline104/controller/healthCareWorkerType/HealthCareWorkerTypeController.java b/src/main/java/com/iemr/helpline104/controller/healthCareWorkerType/HealthCareWorkerTypeController.java index 4181672..4de4998 100644 --- a/src/main/java/com/iemr/helpline104/controller/healthCareWorkerType/HealthCareWorkerTypeController.java +++ b/src/main/java/com/iemr/helpline104/controller/healthCareWorkerType/HealthCareWorkerTypeController.java @@ -27,7 +27,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.CrossOrigin; + import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -39,7 +39,6 @@ import io.swagger.v3.oas.annotations.Operation; - @RequestMapping(value = "/beneficiary") @RestController public class HealthCareWorkerTypeController { @@ -49,7 +48,6 @@ public class HealthCareWorkerTypeController { @Autowired private HealthCareWorkerService healthCareWorkerService; - @CrossOrigin @Operation(summary = "Get health care worker types") @PostMapping(value = "/get/healthCareWorkerTypes", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getHealthCareWorkerTypes() { diff --git a/src/main/java/com/iemr/helpline104/controller/hihl/HIHLController.java b/src/main/java/com/iemr/helpline104/controller/hihl/HIHLController.java index c2a8b86..8b101b2 100644 --- a/src/main/java/com/iemr/helpline104/controller/hihl/HIHLController.java +++ b/src/main/java/com/iemr/helpline104/controller/hihl/HIHLController.java @@ -33,8 +33,6 @@ import io.swagger.v3.oas.annotations.Operation; - -@CrossOrigin @RestController @RequestMapping(value = "/hihl", headers = "Authorization") public class HIHLController { diff --git a/src/main/java/com/iemr/helpline104/controller/location/CountryCityController.java b/src/main/java/com/iemr/helpline104/controller/location/CountryCityController.java index c3687cf..783f66b 100644 --- a/src/main/java/com/iemr/helpline104/controller/location/CountryCityController.java +++ b/src/main/java/com/iemr/helpline104/controller/location/CountryCityController.java @@ -41,7 +41,6 @@ public class CountryCityController { private CountryCityService countryCityService; private Logger logger = LoggerFactory.getLogger(FeedbackController.class); - @CrossOrigin @Operation(summary = "Get country") @GetMapping(value = { "/getCountry" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") @@ -59,7 +58,6 @@ public String getCountry() { return response.toString(); } - @CrossOrigin @Operation(summary = "Get cities") @GetMapping(value = { "/getCities/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") diff --git a/src/main/java/com/iemr/helpline104/controller/location/LocationController.java b/src/main/java/com/iemr/helpline104/controller/location/LocationController.java index 2769b46..f4d5958 100644 --- a/src/main/java/com/iemr/helpline104/controller/location/LocationController.java +++ b/src/main/java/com/iemr/helpline104/controller/location/LocationController.java @@ -39,7 +39,6 @@ public class LocationController { private LocationService locationService; - @CrossOrigin @Operation(summary = "Get states") @GetMapping(value = { "/states/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") @@ -48,7 +47,6 @@ public String getStates(@PathVariable("id") int id) { return stateList.toString(); } - @CrossOrigin @Operation(summary = "Get districts") @GetMapping(value = { "/districts/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") @@ -58,7 +56,6 @@ public String getDistricts(@PathVariable("id") int id) { return districtsList.toString(); } - @CrossOrigin @Operation(summary = "Get state districts") @GetMapping(value = { "/statesDistricts/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") @@ -67,7 +64,6 @@ public String geStatetDistricts(@PathVariable("id") int id) { return districtsList.toString(); } - @CrossOrigin @Operation(summary = "Get district blocks") @GetMapping(value = { "/taluks/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") @@ -76,7 +72,6 @@ public String getDistrictBlocks(@PathVariable("id") int id) { return districtBlockList.toString(); } - @CrossOrigin @Operation(summary = "Get city") @GetMapping(value = { "/city/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") @@ -85,7 +80,6 @@ public String getCity(@PathVariable("id") int id) { return districtBlockList.toString(); } - @CrossOrigin @Operation(summary = "Get villages") @GetMapping(value = { "/village/{id}" }, produces = MediaType.APPLICATION_JSON, headers = "Authorization") diff --git a/src/main/java/com/iemr/helpline104/controller/organDonation/OrganDonationController.java b/src/main/java/com/iemr/helpline104/controller/organDonation/OrganDonationController.java index 13d785f..7b37b77 100644 --- a/src/main/java/com/iemr/helpline104/controller/organDonation/OrganDonationController.java +++ b/src/main/java/com/iemr/helpline104/controller/organDonation/OrganDonationController.java @@ -48,7 +48,6 @@ public class OrganDonationController { @Autowired private OrganDonationService organDonationService; - @CrossOrigin @Operation(summary = "Save organ donation details") @PostMapping(value = "/save/organDonationRequestDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveOrganDonationDetails(@RequestBody String request) { @@ -66,7 +65,6 @@ public String saveOrganDonationDetails(@RequestBody String request) { return output.toString(); } - @CrossOrigin @Operation(summary = "Update organ donation details") @PostMapping(value = "/update/organDonationRequestDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String updateOrganDonationDetails(@RequestBody String request) { @@ -84,7 +82,6 @@ public String updateOrganDonationDetails(@RequestBody String request) { return output.toString(); } - @CrossOrigin @Operation(summary = "Save organ donation institute details") @PostMapping(value = "/save/organDonationInstituteDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveOrganDonationInstituteDetails(@RequestBody String request) { @@ -102,7 +99,6 @@ public String saveOrganDonationInstituteDetails(@RequestBody String request) { return output.toString(); } - @CrossOrigin @Operation(summary = "Get organ donation details") @PostMapping(value = "/get/organDonationRequestDetails", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getOrganDonationDetails( @@ -127,7 +123,6 @@ public String getOrganDonationDetails( return output.toString(); } - @CrossOrigin @Operation(summary = "Get organ donation types") @PostMapping(value = "/get/organDonationTypes", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getOrganDonationTypes() { @@ -145,7 +140,6 @@ public String getOrganDonationTypes() { return output.toString(); } - @CrossOrigin @Operation(summary = "Get donatable organs") @PostMapping(value = "/get/DonatableOrgans", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getDonatableOrgans() { diff --git a/src/main/java/com/iemr/helpline104/controller/prescription/PrescriptionController.java b/src/main/java/com/iemr/helpline104/controller/prescription/PrescriptionController.java index 1ec81b7..bec392b 100644 --- a/src/main/java/com/iemr/helpline104/controller/prescription/PrescriptionController.java +++ b/src/main/java/com/iemr/helpline104/controller/prescription/PrescriptionController.java @@ -48,7 +48,6 @@ public class PrescriptionController { @Autowired private PrescriptionService prescriptionService; - @CrossOrigin @Operation(summary = "Save prescription") @PostMapping(value = "/save/prescription", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String savePrescription(@RequestBody String createRequest) { @@ -69,7 +68,6 @@ public String savePrescription(@RequestBody String createRequest) { return output.toString(); } - @CrossOrigin @Operation(summary = "Get prescription") @PostMapping(value = "/get/prescription", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getPrescription(@RequestBody String createRequest) { @@ -96,7 +94,6 @@ public String getPrescription(@RequestBody String createRequest) { return output.toString(); } - @CrossOrigin @Operation(summary = "Get prescription list") @PostMapping(value = "/get/prescriptionList", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getPrescriptionList(@RequestBody String createRequest) { @@ -129,7 +126,6 @@ public String getPrescriptionList(@RequestBody String createRequest) { return output.toString(); } - @CrossOrigin @Operation(summary = "Get latest valid pescription") @PostMapping(value = "/get/latestValidPescription", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String getLatestValidPescription( diff --git a/src/main/java/com/iemr/helpline104/controller/scheme/SchemeController.java b/src/main/java/com/iemr/helpline104/controller/scheme/SchemeController.java index ae23f92..3a038c2 100644 --- a/src/main/java/com/iemr/helpline104/controller/scheme/SchemeController.java +++ b/src/main/java/com/iemr/helpline104/controller/scheme/SchemeController.java @@ -48,7 +48,6 @@ public class SchemeController { InputMapper mapper = new InputMapper(); - @CrossOrigin @Operation(summary = "Save scheme search history") @PostMapping(value = "/save/schemeSearchHistory", produces = MediaType.APPLICATION_JSON_VALUE, headers = "Authorization") public String saveSchemeSearchHistory( @@ -71,7 +70,6 @@ public String saveSchemeSearchHistory( return output.toString(); } - @CrossOrigin @Operation(summary = "Retrieve scheme search history") @PostMapping(value = "/getSchemeSearchHistory", headers = "Authorization") public String getBenSchemeHistory( diff --git a/src/main/java/com/iemr/helpline104/controller/secondaryCrmReports/SecondaryCRMReports.java b/src/main/java/com/iemr/helpline104/controller/secondaryCrmReports/SecondaryCRMReports.java index d64f50d..ae8ee7c 100644 --- a/src/main/java/com/iemr/helpline104/controller/secondaryCrmReports/SecondaryCRMReports.java +++ b/src/main/java/com/iemr/helpline104/controller/secondaryCrmReports/SecondaryCRMReports.java @@ -28,7 +28,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.CrossOrigin; + import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -43,8 +43,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; - -@CrossOrigin @RequestMapping({ "/crmReports" }) @RestController public class SecondaryCRMReports { @@ -53,7 +51,6 @@ public class SecondaryCRMReports { private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); InputMapper inputMapper = new InputMapper(); - @CrossOrigin() @Operation(summary = "Get RO summary report by date") @PostMapping(value = "/getROSummaryReportByDate", headers = "Authorization") public ResponseEntity getROSummaryReportByDate(@RequestBody String jsonRequest) @@ -77,11 +74,10 @@ public ResponseEntity getROSummaryReportByDate(@RequestBody String jsonR } } - @CrossOrigin() @Operation(summary = "Get HAO summary report by date") @PostMapping(value = "/getHAOSummaryReportByDate", headers = "Authorization") public ResponseEntity getHAOSummaryReportByDate( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -105,11 +101,10 @@ public ResponseEntity getHAOSummaryReportByDate( } } - @CrossOrigin() @Operation(summary = "Get MO summary report by date") @PostMapping(value = "/getMOSummaryReportByDate", headers = "Authorization") public ResponseEntity getMOSummaryReportByDate( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -133,11 +128,10 @@ public ResponseEntity getMOSummaryReportByDate( } } - @CrossOrigin() @Operation(summary = "Get medical advise report") @PostMapping(value = "/getMedicalAdviseReport", headers = "Authorization") public ResponseEntity getMedicalAdviseReport( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -161,11 +155,10 @@ public ResponseEntity getMedicalAdviseReport( } } - @CrossOrigin() @Operation(summary = "Get CO summary report by date") @PostMapping(value = "/getCOSummaryReportByDate", headers = "Authorization") public ResponseEntity getCOSummaryReportByDate( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -189,11 +182,10 @@ public ResponseEntity getCOSummaryReportByDate( } } - @CrossOrigin() @Operation(summary = "Get mental health report") @PostMapping(value = "/getMentalHealthReport", headers = "Authorization") public ResponseEntity getMentalHealthReport( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -217,11 +209,10 @@ public ResponseEntity getMentalHealthReport( } } - @CrossOrigin() @Operation(summary = "Get grievance report by date ") @PostMapping(value = "/getGrievanceReportByDate", headers = "Authorization") public ResponseEntity getGrievanceReportByDate( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -245,11 +236,10 @@ public ResponseEntity getGrievanceReportByDate( } } - @CrossOrigin() @Operation(summary = "Get prescription report by date") @PostMapping(value = "/getPrescriptionReportByDate", headers = "Authorization") public ResponseEntity getPrescriptionReportByDate( - @Parameter( description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + @Parameter(description = "\"{\\\"startDate\\\":\\\"Timestamp\\\",\\\"endDate\\\":\\\"Timestamp\\\"," + "\\\"providerServiceMapID\\\":\\\"Integer\\\",\\\"agentID\\\":\\\"Integer\\\"," + "\\\"roleName\\\":\\\"String\\\",\\\"reportTypeID\\\":\\\"Integer\\\",\\\"reportType\\\":\\\"String\\\"}\"") @RequestBody String jsonRequest) @@ -273,11 +263,10 @@ public ResponseEntity getPrescriptionReportByDate( } } - @CrossOrigin() @Operation(summary = "Get CDI response report") @PostMapping(value = "/getCDIResponseReport", headers = "Authorization") public ResponseEntity getCDIResponseReport( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) @@ -301,11 +290,10 @@ public ResponseEntity getCDIResponseReport( } } - @CrossOrigin() @Operation(summary = "Get schemes report by date") @PostMapping(value = "/getSchemesReportByDate", headers = "Authorization") public ResponseEntity getSchemesReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) @@ -330,11 +318,10 @@ public ResponseEntity getSchemesReportByDate( } } - @CrossOrigin() @Operation(summary = "Get directory service report by date") @PostMapping(value = "/getDirectoryServiceReportByDate", headers = "Authorization") public ResponseEntity getDirectoryServiceReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) @@ -358,11 +345,10 @@ public ResponseEntity getDirectoryServiceReportByDate( } } - @CrossOrigin() @Operation(summary = "Get food safety report by date") @PostMapping(value = "/getFoodSafetyReportByDate", headers = "Authorization") public ResponseEntity getFoodSafetyReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) @@ -387,11 +373,10 @@ public ResponseEntity getFoodSafetyReportByDate( } - @CrossOrigin() @Operation(summary = "Get blood on call report by date") @PostMapping(value = "/getBloodOnCallReportByDate", headers = "Authorization") public ResponseEntity getBloodOnCallReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) @@ -415,11 +400,10 @@ public ResponseEntity getBloodOnCallReportByDate( } } - @CrossOrigin() @Operation(summary = "Get blood on call count report by date") @PostMapping(value = "/getBloodOnCallCountReportByDate", headers = "Authorization") public ResponseEntity getBloodOnCallCountReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\", " + "\"districtID\":\"Integer\", " + "\"searchCriteria\": \"String\", " + "\"subDistrictID\": \"Integer\", " @@ -446,11 +430,10 @@ public ResponseEntity getBloodOnCallCountReportByDate( } } - @CrossOrigin() @Operation(summary = "Get epidemic report by date") @PostMapping(value = "/getEpidemicReportByDate", headers = "Authorization") public ResponseEntity getEpidemicReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) { String filename = getFileName(jsonRequest, "Epidemic_Outbreak_Service"); @@ -472,11 +455,10 @@ public ResponseEntity getEpidemicReportByDate( } } - @CrossOrigin() @Operation(summary = "Get organ donation report by date") @PostMapping(value = "/getOrganDonationReportByDate", headers = "Authorization") public ResponseEntity getOrganDonationReportByDate( - @Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " + @Parameter(description = "{\"startDateTime\":\"Date time stamp of start date\", " + "\"providerServiceMapID\":\"Integer - provider service map ID\", " + "\"endDateTime\":\"Date time stamp of end date\"}") @RequestBody String jsonRequest) @@ -500,7 +482,6 @@ public ResponseEntity getOrganDonationReportByDate( } } - @CrossOrigin() @Operation(summary = "Get PD summary report by date") @PostMapping(value = "/getPDSummaryReportByDate", headers = "Authorization") public ResponseEntity getPDSummaryReport(@Parameter(description="{\"startDateTime\":\"Date time stamp of start date\", " diff --git a/src/main/java/com/iemr/helpline104/controller/sioHistory/ServiceImprovementOfficerController.java b/src/main/java/com/iemr/helpline104/controller/sioHistory/ServiceImprovementOfficerController.java index c137dd1..5f36366 100644 --- a/src/main/java/com/iemr/helpline104/controller/sioHistory/ServiceImprovementOfficerController.java +++ b/src/main/java/com/iemr/helpline104/controller/sioHistory/ServiceImprovementOfficerController.java @@ -64,7 +64,6 @@ public class ServiceImprovementOfficerController { @Autowired private FoodSafetyCopmlaintServiceImpl foodSafetyCopmlaintServiceImpl; - @CrossOrigin @Operation(summary = "Get sio history") @PostMapping(value = "/getSioHistory", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON, headers = "Authorization") public String getSioHistory(@RequestBody String benificiary) { diff --git a/src/main/java/com/iemr/helpline104/controller/snomedct/SnomedController.java b/src/main/java/com/iemr/helpline104/controller/snomedct/SnomedController.java index f6f2cb4..3562aa6 100644 --- a/src/main/java/com/iemr/helpline104/controller/snomedct/SnomedController.java +++ b/src/main/java/com/iemr/helpline104/controller/snomedct/SnomedController.java @@ -50,7 +50,6 @@ public void setSnomedService(SnomedService snomedService) { this.snomedService = snomedService; } - @CrossOrigin @Operation(summary = "Retrieve Snomed CT record") @PostMapping(value = "/getSnomedCTRecord", headers = "Authorization") public String getSnomedCTRecord(@Parameter(description = "{\"term\":\"String\"}") @RequestBody String request) { @@ -84,7 +83,6 @@ public String getSnomedCTRecord(@Parameter(description = "{\"term\":\"String\"}" return output.toString(); } - @CrossOrigin @Operation(summary = "Retrieves Snomed CT records") @PostMapping(value = "/getSnomedCTRecords", headers = "Authorization") public String getSnomedCTRecords(@Parameter(description = "{\"term\":\"String\"}") @RequestBody String request) { diff --git a/src/main/java/com/iemr/helpline104/controller/users/IEMRAdminController.java b/src/main/java/com/iemr/helpline104/controller/users/IEMRAdminController.java index bb7cff6..ec61eba 100644 --- a/src/main/java/com/iemr/helpline104/controller/users/IEMRAdminController.java +++ b/src/main/java/com/iemr/helpline104/controller/users/IEMRAdminController.java @@ -46,7 +46,6 @@ import io.swagger.v3.oas.annotations.Operation; -@CrossOrigin @RequestMapping(value = "/user") @RestController public class IEMRAdminController { @@ -58,7 +57,6 @@ public void setIemrAdminUserService(IEMRAdminUserServiceImpl iemrAdminUserServic this.iemrAdminUserService = iemrAdminUserService; } - @CrossOrigin() @Operation(summary = "User authenticate") @PostMapping(value = { "/userAuthenticate" }, produces = { "application/json" }) public String userAuthenticate(@RequestBody M_User m_User) { @@ -99,7 +97,6 @@ public String userAuthenticate(@RequestBody M_User m_User) { return new Gson().toJson(resMap); } - @CrossOrigin() @Operation(summary = "Forget password") @PostMapping(value = { "/forgetPassword" }, produces = { "application/json" }) public String forgetPassword(@RequestBody M_User m_User) { @@ -127,7 +124,6 @@ public String forgetPassword(@RequestBody M_User m_User) { return new Gson().toJson(resMap); } - @CrossOrigin() @Operation(summary = "Set forget password") @PostMapping(value = { "/setForgetPassword" }, produces = { "application/json" }) public String setPassword(@RequestBody M_User m_user) { @@ -149,7 +145,6 @@ public String setPassword(@RequestBody M_User m_user) { return new Gson().toJson(setStatus); } - @CrossOrigin() @Operation(summary = "Change password") @PostMapping(value = { "/changePassword" }, produces = { "application/json" }) public String changePassword(@RequestBody M_User m_User) { @@ -172,7 +167,6 @@ public String changePassword(@RequestBody M_User m_User) { return new Gson().toJson(changeReqResult); } - @CrossOrigin() @Operation(summary = "Save user security question answers") @PostMapping(value = "/saveUserSecurityQuesAns", produces = "application/json") public String saveUserSecurityQuesAns(@RequestBody Iterable m_UserSecurityQMapping) { @@ -194,7 +188,6 @@ public String saveUserSecurityQuesAns(@RequestBody Iterable jwtUserIdValidationFilter(JwtAuthenticationUtil jwtAuthenticationUtil) { - FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); - registrationBean.setFilter(new JwtUserIdValidationFilter(jwtAuthenticationUtil)); - registrationBean.addUrlPatterns("/*"); // Apply filter to all API endpoints - return registrationBean; - } + public FilterRegistrationBean jwtUserIdValidationFilter( + JwtAuthenticationUtil jwtAuthenticationUtil) { + FilterRegistrationBean registrationBean = new FilterRegistrationBean<>(); + + // Pass allowedOrigins explicitly to the filter constructor + JwtUserIdValidationFilter filter = new JwtUserIdValidationFilter(jwtAuthenticationUtil, allowedOrigins); + registrationBean.setFilter(filter); + registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); + registrationBean.addUrlPatterns("/*"); // Apply filter to all API endpoints + return registrationBean; + } } diff --git a/src/main/java/com/iemr/helpline104/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/helpline104/utils/JwtUserIdValidationFilter.java index 24d49f0..fe90b2c 100644 --- a/src/main/java/com/iemr/helpline104/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/helpline104/utils/JwtUserIdValidationFilter.java @@ -1,6 +1,7 @@ package com.iemr.helpline104.utils; import java.io.IOException; +import java.util.Arrays; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,14 +18,16 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -@Component public class JwtUserIdValidationFilter implements Filter { private final JwtAuthenticationUtil jwtAuthenticationUtil; private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + private final String allowedOrigins; - public JwtUserIdValidationFilter(JwtAuthenticationUtil jwtAuthenticationUtil) { + public JwtUserIdValidationFilter(JwtAuthenticationUtil jwtAuthenticationUtil, + String allowedOrigins) { this.jwtAuthenticationUtil = jwtAuthenticationUtil; + this.allowedOrigins = allowedOrigins; } @Override @@ -33,6 +36,27 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; + String origin = request.getHeader("Origin"); + + logger.debug("Incoming Origin: {}", origin); + logger.debug("Allowed Origins Configured: {}", allowedOrigins); + + if (origin != null && isOriginAllowed(origin)) { + response.setHeader("Access-Control-Allow-Origin", origin); + response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); + response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Accept, Jwttoken"); + response.setHeader("Vary", "Origin"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + } else { + logger.warn("Origin [{}] is NOT allowed. CORS headers NOT added.", origin); + } + + if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { + logger.info("OPTIONS request - skipping JWT validation"); + response.setStatus(HttpServletResponse.SC_OK); + return; + } + String path = request.getRequestURI(); String contextPath = request.getContextPath(); logger.info("JwtUserIdValidationFilter invoked for path: " + path); @@ -43,79 +67,99 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo for (Cookie cookie : cookies) { if ("userId".equals(cookie.getName())) { logger.warn("userId found in cookies! Clearing it..."); - clearUserIdCookie(response); // Explicitly remove userId cookie + clearUserIdCookie(response); // Explicitly remove userId cookie } } } else { logger.info("No cookies found in the request"); } - // Log headers for debugging String jwtTokenFromHeader = request.getHeader("Jwttoken"); logger.info("JWT token from header: " + jwtTokenFromHeader); // Skip login and public endpoints - if (path.equals(contextPath + "/user/userAuthenticate") || - path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") - || path.startsWith(contextPath + "/swagger-ui") - || path.startsWith(contextPath + "/v3/api-docs") - || path.startsWith(contextPath + "/user/refreshToken") - || path.startsWith(contextPath + "/public")) { + if (path.equals(contextPath + "/user/userAuthenticate") || + path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") + || path.startsWith(contextPath + "/swagger-ui") + || path.startsWith(contextPath + "/v3/api-docs") + || path.startsWith(contextPath + "/user/refreshToken") + || path.startsWith(contextPath + "/public")) { logger.info("Skipping filter for path: " + path); filterChain.doFilter(servletRequest, servletResponse); return; } try { - String jwtFromCookie = getJwtTokenFromCookies(request); - String jwtFromHeader = request.getHeader("JwtToken"); - String authHeader = request.getHeader("Authorization"); - - if (jwtFromCookie != null) { - logger.info("Validating JWT token from cookie"); - if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromCookie)) { - AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper( - request, ""); - filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); - return; - } - } else if (jwtFromHeader != null) { - logger.info("Validating JWT token from header"); - if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) { - AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper( - request, ""); - filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); - return; - } - } else { - String userAgent = request.getHeader("User-Agent"); - logger.info("User-Agent: " + userAgent); - - if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { - try { - UserAgentContext.setUserAgent(userAgent); - filterChain.doFilter(servletRequest, servletResponse); - } finally { - UserAgentContext.clear(); - } - return; - } - } - - logger.warn("No valid authentication token found"); - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized: Invalid or missing token"); + String jwtFromCookie = getJwtTokenFromCookies(request); + String jwtFromHeader = request.getHeader("JwtToken"); + String authHeader = request.getHeader("Authorization"); + + if (jwtFromCookie != null) { + logger.info("Validating JWT token from cookie"); + if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromCookie)) { + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper( + request, ""); + filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); + return; + } + } else if (jwtFromHeader != null) { + logger.info("Validating JWT token from header"); + if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) { + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper( + request, ""); + filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); + return; + } + } else { + String userAgent = request.getHeader("User-Agent"); + logger.info("User-Agent: " + userAgent); + + if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { + try { + UserAgentContext.setUserAgent(userAgent); + filterChain.doFilter(servletRequest, servletResponse); + } finally { + UserAgentContext.clear(); + } + return; + } + } + + logger.warn("No valid authentication token found"); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized: Invalid or missing token"); } catch (Exception e) { logger.error("Authorization error: ", e); response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authorization error: " + e.getMessage()); } } + + private boolean isOriginAllowed(String origin) { + if (origin == null || allowedOrigins == null || allowedOrigins.trim().isEmpty()) { + logger.warn("No allowed origins configured or origin is null"); + return false; + } + + return Arrays.stream(allowedOrigins.split(",")) + .map(String::trim) + .anyMatch(pattern -> { + String regex = pattern + .replace(".", "\\.") + .replace("*", ".*") + .replace("http://localhost:.*", "http://localhost:\\d+"); // special case for wildcard port + + boolean matched = origin.matches(regex); + return matched; + }); + } + private boolean isMobileClient(String userAgent) { - if (userAgent == null) - return false; - userAgent = userAgent.toLowerCase(); - return userAgent.contains("okhttp"); - } + if (userAgent == null) + return false; + userAgent = userAgent.toLowerCase(); + return userAgent.contains("okhttp"); + } + private String getJwtTokenFromCookies(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies != null) { @@ -127,14 +171,13 @@ private String getJwtTokenFromCookies(HttpServletRequest request) { } return null; } - + private void clearUserIdCookie(HttpServletResponse response) { Cookie cookie = new Cookie("userId", null); cookie.setPath("/"); cookie.setHttpOnly(true); - cookie.setSecure(true); - cookie.setMaxAge(0); // Invalidate the cookie + cookie.setSecure(true); + cookie.setMaxAge(0); // Invalidate the cookie response.addCookie(cookie); } } -