From 714205c68c2676a2602e2d9d74833463b551d634 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Wed, 18 Dec 2024 10:39:29 +0530 Subject: [PATCH 1/4] AMM-1168 --- src/main/java/com/iemr/mmu/service/anc/ANCServiceImpl.java | 4 ++++ .../dataSyncLayerCentral/DataSyncRepositoryCentral.java | 6 +++--- .../tele_consultation/TeleConsultationServiceImpl.java | 5 ++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/mmu/service/anc/ANCServiceImpl.java b/src/main/java/com/iemr/mmu/service/anc/ANCServiceImpl.java index af1e5807..d9538b62 100644 --- a/src/main/java/com/iemr/mmu/service/anc/ANCServiceImpl.java +++ b/src/main/java/com/iemr/mmu/service/anc/ANCServiceImpl.java @@ -121,6 +121,10 @@ public void setCommonBenStatusFlowServiceImpl(CommonBenStatusFlowServiceImpl com this.commonBenStatusFlowServiceImpl = commonBenStatusFlowServiceImpl; } */ + @Autowired + public void setTeleConsultationServiceImpl(TeleConsultationServiceImpl teleConsultationServiceImpl) { + this.teleConsultationServiceImpl = teleConsultationServiceImpl; + } @Autowired public void setANCDoctorServiceImpl(ANCDoctorServiceImpl ancDoctorServiceImpl) { this.ancDoctorServiceImpl = ancDoctorServiceImpl; diff --git a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java index b2dd2809..6b62af69 100644 --- a/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java +++ b/src/main/java/com/iemr/mmu/service/dataSyncLayerCentral/DataSyncRepositoryCentral.java @@ -168,18 +168,18 @@ public List> getMasterDataFromTable(String schema, String ta if (lastDownloadDate != null) { if (masterType.equalsIgnoreCase("A")) { baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table - + " WHERE Date(LastModDate) >= ? "; + + " WHERE LastModDate >= ? "; resultSetList = jdbcTemplate.queryForList(baseQuery,lastDownloadDate); } else if (masterType.equalsIgnoreCase("V")) { baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table - + " WHERE Date(LastModDate) >= ? AND VanID = ? "; + + " WHERE LastModDate >= ? AND VanID = ? "; resultSetList = jdbcTemplate.queryForList(baseQuery,lastDownloadDate,vanID); } else if (masterType.equalsIgnoreCase("P")) { baseQuery += " SELECT " + columnNames + " FROM " + schema + "." + table - + " WHERE Date(LastModDate) >= ? AND ProviderServiceMapID = ? "; + + " WHERE LastModDate >= ? AND ProviderServiceMapID = ? "; resultSetList = jdbcTemplate.queryForList(baseQuery,lastDownloadDate,psmID); } } else { diff --git a/src/main/java/com/iemr/mmu/service/tele_consultation/TeleConsultationServiceImpl.java b/src/main/java/com/iemr/mmu/service/tele_consultation/TeleConsultationServiceImpl.java index 32f56d85..ad330767 100644 --- a/src/main/java/com/iemr/mmu/service/tele_consultation/TeleConsultationServiceImpl.java +++ b/src/main/java/com/iemr/mmu/service/tele_consultation/TeleConsultationServiceImpl.java @@ -69,8 +69,11 @@ public class TeleConsultationServiceImpl implements TeleConsultationService { private TCRequestModelRepo tCRequestModelRepo; @Autowired private BeneficiaryFlowStatusRepo beneficiaryFlowStatusRepo; - @Autowired private CommonDoctorServiceImpl commonDoctorServiceImpl; + @Autowired + public void setCommonDoctorServiceImpl(CommonDoctorServiceImpl commonDoctorServiceImpl) { + this.commonDoctorServiceImpl = commonDoctorServiceImpl; + } public int createTCRequest(TCRequestModel tCRequestModel) { TCRequestModel tCRequestModelRS = tCRequestModelRepo.save(tCRequestModel); From ba1ae50e135896333b078d41a700eae283df2df9 Mon Sep 17 00:00:00 2001 From: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:52:15 +0530 Subject: [PATCH 2/4] Update application.properties --- src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d99551ee..86eee26c 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -48,4 +48,4 @@ logging.path=logs/ logging.file.name=logs/mmu-api.log spring.main.allow-circular-references=true - +spring.main.allow-bean-definition-overriding=true From c1537fd61cb38100512ac327f0660000d48a7df3 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 17 Apr 2025 17:11:30 +0530 Subject: [PATCH 3/4] Swagger changes --- src/main/environment/common_ci.properties | 2 ++ .../java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java | 3 +++ src/main/java/com/iemr/mmu/utils/http/HttpInterceptor.java | 3 +++ 3 files changed, 8 insertions(+) diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index 5e733553..29a976b9 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -82,3 +82,5 @@ jwt.secret=@env.JWT_SECRET_KEY@ #ELK logging file name logging.file.name=@env.MMU_API_LOGGING_FILE_NAME@ +springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@ +springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@ diff --git a/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java index 6736bd3e..57a49ea4 100644 --- a/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java @@ -55,6 +55,9 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo // 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")) { logger.info("Skipping filter for path: " + path); filterChain.doFilter(servletRequest, servletResponse); diff --git a/src/main/java/com/iemr/mmu/utils/http/HttpInterceptor.java b/src/main/java/com/iemr/mmu/utils/http/HttpInterceptor.java index 6a236aeb..1c799988 100644 --- a/src/main/java/com/iemr/mmu/utils/http/HttpInterceptor.java +++ b/src/main/java/com/iemr/mmu/utils/http/HttpInterceptor.java @@ -85,6 +85,9 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons case "ui": case "swagger-resources": case "api-docs": + case "index.html": + case "swagger-initializer.js": + case "swagger-config": break; case "error": From ac8c5ddcb813aecc47a5a91541b74fd45ebf38d1 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 20 May 2025 16:44:54 +0530 Subject: [PATCH 4/4] AMM-1456 --- .../mmu/utils/JwtUserIdValidationFilter.java | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java index 57a49ea4..0b9bb99e 100644 --- a/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/mmu/utils/JwtUserIdValidationFilter.java @@ -65,32 +65,47 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo } try { - // Retrieve JWT token from cookies - String jwtTokenFromCookie = getJwtTokenFromCookies(request); - logger.info("JWT token from cookie: "); - - // Determine which token (cookie or header) to validate - String jwtToken = jwtTokenFromCookie != null ? jwtTokenFromCookie : jwtTokenFromHeader; - if (jwtToken == null) { - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "JWT token not found in cookies or headers"); - return; + 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)) { + filterChain.doFilter(servletRequest, servletResponse); + return; + } } - // Validate JWT token and userId - boolean isValid = jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtToken); + if (jwtFromHeader != null) { + logger.info("Validating JWT token from header"); + if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) { + filterChain.doFilter(servletRequest, servletResponse); + return; + } + } + String userAgent = request.getHeader("User-Agent"); + logger.info("User-Agent: " + userAgent); - if (isValid) { - // If token is valid, allow the request to proceed + if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { filterChain.doFilter(servletRequest, servletResponse); - } else { - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid JWT token"); + 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 isMobileClient(String userAgent) { + if (userAgent == null) + return false; + userAgent = userAgent.toLowerCase(); + return userAgent.contains("okhttp"); // iOS (custom clients) + } private String getJwtTokenFromCookies(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies != null) {