From 104547d88fd6b882c6ba5a998d93a1f8fa785c55 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 24 Dec 2024 17:17:01 +0530 Subject: [PATCH 1/7] Reverted Changes --- .../java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java b/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java index 79fa6c82..b5cf2a23 100644 --- a/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java +++ b/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java @@ -90,11 +90,6 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons status = false; break; default: - String remoteAddress = request.getHeader("X-FORWARDED-FOR"); - if (remoteAddress == null || remoteAddress.trim().length() == 0) { - remoteAddress = request.getRemoteAddr(); - } - validator.checkKeyExists(authorization, remoteAddress); break; } } catch (Exception e) { From 85ca62790e4d81d87a1e77fe955d28422931dac4 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 24 Dec 2024 17:18:21 +0530 Subject: [PATCH 2/7] removed Unused imports --- .../com/iemr/tm/utils/http/HTTPRequestInterceptor.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java b/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java index b5cf2a23..32acd8f3 100644 --- a/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java +++ b/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java @@ -30,22 +30,16 @@ import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.HandlerInterceptor; -import com.iemr.tm.utils.redis.RedisStorage; import com.iemr.tm.utils.response.OutputResponse; import com.iemr.tm.utils.sessionobject.SessionObject; -import com.iemr.tm.utils.validator.Validator; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @Component public class HTTPRequestInterceptor implements HandlerInterceptor { - private Validator validator; Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); - @Autowired - public void setValidator(Validator validator) { - this.validator = validator; - } + private SessionObject sessionObject; @Autowired From 6f93e131d7f429446995e662288071f11d633259 Mon Sep 17 00:00:00 2001 From: ravishanigarapu <133210792+ravishanigarapu@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:02:58 +0530 Subject: [PATCH 3/7] Update application.properties --- src/main/resources/application.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 773d02de..de1c2e11 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -54,3 +54,4 @@ logging.path=logs/ logging.file.name=logs/tm-api.log spring.main.allow-circular-references=true +spring.main.allow-bean-definition-overriding=true From fe1908cec50f4655bb6d0e58f275560a2ae94d6b Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 17 Apr 2025 17:22:23 +0530 Subject: [PATCH 4/7] Swagger changes --- src/main/environment/common_ci.properties | 3 +++ src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/environment/common_ci.properties b/src/main/environment/common_ci.properties index f839deee..93a55126 100644 --- a/src/main/environment/common_ci.properties +++ b/src/main/environment/common_ci.properties @@ -73,3 +73,6 @@ jwt.secret=@env.JWT_SECRET_KEY@ #ELK logging file name logging.file.name=@env.TM_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/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index 06e3a5e8..3da6123d 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/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); From e37d6ba4a6ee2714050ccc6903cb540ee88ac5a8 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Wed, 14 May 2025 15:00:33 +0530 Subject: [PATCH 5/7] Null Condition Added --- .../transaction/CommonNurseServiceImpl.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java index 969da31d..3d0248fc 100644 --- a/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java @@ -1894,24 +1894,26 @@ public BenMenstrualDetails getMenstrualHistory(Long beneficiaryRegID, Long visit BenMenstrualDetails menstrualHistoryDetails = BenMenstrualDetails.getBenMenstrualDetails(menstrualHistory); // CRs changes, 30-10-2018 - String problemID = menstrualHistoryDetails.getMenstrualProblemID(); - String problemName = menstrualHistoryDetails.getProblemName(); - - if (problemID != null && problemName != null) { - String[] problemIdArr = problemID.split(","); - String[] problemNameArr = problemName.split(","); - ArrayList> menstrualProblemList = new ArrayList<>(); - Map menstrualProblemMap = null; - - if (problemIdArr.length == problemNameArr.length) { - for (int i = 0; i < problemIdArr.length; i++) { - menstrualProblemMap = new HashMap(); - menstrualProblemMap.put("menstrualProblemID", problemIdArr[i]); - menstrualProblemMap.put("problemName", problemNameArr[i]); - menstrualProblemList.add(menstrualProblemMap); + if (null != menstrualHistoryDetails) { + String problemID = menstrualHistoryDetails.getMenstrualProblemID(); + String problemName = menstrualHistoryDetails.getProblemName(); + + if (problemID != null && problemName != null) { + String[] problemIdArr = problemID.split(","); + String[] problemNameArr = problemName.split(","); + ArrayList> menstrualProblemList = new ArrayList<>(); + Map menstrualProblemMap = null; + + if (problemIdArr.length == problemNameArr.length) { + for (int i = 0; i < problemIdArr.length; i++) { + menstrualProblemMap = new HashMap(); + menstrualProblemMap.put("menstrualProblemID", problemIdArr[i]); + menstrualProblemMap.put("problemName", problemNameArr[i]); + menstrualProblemList.add(menstrualProblemMap); + } } + menstrualHistoryDetails.setMenstrualProblemList(menstrualProblemList); } - menstrualHistoryDetails.setMenstrualProblemList(menstrualProblemList); } return menstrualHistoryDetails; From 35237c1d109df6105f590a7d5991f15646c7bec0 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 20 May 2025 14:09:49 +0530 Subject: [PATCH 6/7] AMM-1456 --- .../tm/utils/JwtUserIdValidationFilter.java | 51 +++++++++++-------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index 3da6123d..3274d6ee 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -48,10 +48,6 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("No cookies found in the request"); } - // Log headers for debugging - String jwtTokenFromHeader = request.getHeader("Jwttoken"); - logger.info("JWT token from header: "); - // Skip login and public endpoints if (path.equals(contextPath + "/user/userAuthenticate") || path.equalsIgnoreCase(contextPath + "/user/logOutUserFromConcurrentSession") @@ -65,32 +61,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) { From 36dbe68c2f6613b2bd0d3dce82ecfb7874103700 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 20 May 2025 14:14:25 +0530 Subject: [PATCH 7/7] Indent format --- .../com/iemr/tm/utils/JwtUserIdValidationFilter.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index 3274d6ee..193cc65d 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -51,10 +51,8 @@ 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")) { + || 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; @@ -90,18 +88,20 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo 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) {