From 104547d88fd6b882c6ba5a998d93a1f8fa785c55 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 24 Dec 2024 17:17:01 +0530 Subject: [PATCH 01/14] 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 02/14] 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 03/14] 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 04/14] 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 05/14] 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 06/14] 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 07/14] 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) { From 3498d85177b9e5ab198f3a58a77e660d098cfe96 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 22 May 2025 11:43:38 +0530 Subject: [PATCH 08/14] User-Agent validation --- .../registrar/main/RegistrarController.java | 1 - .../registrar/RegistrarServiceImpl.java | 3 ++- .../java/com/iemr/tm/utils/CookieUtil.java | 12 ++++++++++-- .../tm/utils/JwtUserIdValidationFilter.java | 1 + .../com/iemr/tm/utils/UserAgentContext.java | 18 ++++++++++++++++++ 5 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/iemr/tm/utils/UserAgentContext.java diff --git a/src/main/java/com/iemr/tm/controller/registrar/main/RegistrarController.java b/src/main/java/com/iemr/tm/controller/registrar/main/RegistrarController.java index e4453d46..84c8ec35 100644 --- a/src/main/java/com/iemr/tm/controller/registrar/main/RegistrarController.java +++ b/src/main/java/com/iemr/tm/controller/registrar/main/RegistrarController.java @@ -34,7 +34,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.google.gson.Gson; diff --git a/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java b/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java index 213daaab..ec549ba8 100644 --- a/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java @@ -73,6 +73,7 @@ import com.iemr.tm.repo.registrar.ReistrarRepoBenSearch; import com.iemr.tm.service.benFlowStatus.CommonBenStatusFlowServiceImpl; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.UserAgentContext; import com.iemr.tm.utils.mapper.InputMapper; import com.iemr.tm.utils.response.OutputResponse; @@ -662,7 +663,7 @@ public String registerBeneficiary(String comingRequest, String Authorization) th String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); MultiValueMap headers = new LinkedMultiValueMap(); headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8"); - // headers.add("Content-Type", MediaType.APPLICATION_JSON); + headers.add("User-Agent",UserAgentContext.getUserAgent()); headers.add("AUTHORIZATION", Authorization); headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); HttpEntity request = new HttpEntity(comingRequest, headers); diff --git a/src/main/java/com/iemr/tm/utils/CookieUtil.java b/src/main/java/com/iemr/tm/utils/CookieUtil.java index 6685af01..3071124e 100644 --- a/src/main/java/com/iemr/tm/utils/CookieUtil.java +++ b/src/main/java/com/iemr/tm/utils/CookieUtil.java @@ -25,7 +25,15 @@ public Optional getCookieValue(HttpServletRequest request, String cookie } public String getJwtTokenFromCookie(HttpServletRequest request) { - return Arrays.stream(request.getCookies()).filter(cookie -> "Jwttoken".equals(cookie.getName())) - .map(Cookie::getValue).findFirst().orElse(null); + Cookie[] cookies = request.getCookies(); + if (cookies == null) { + return null; // No cookies present, return null safely + } + + return Arrays.stream(cookies) + .filter(cookie -> "Jwttoken".equals(cookie.getName())) + .map(Cookie::getValue) + .findFirst() + .orElse(null); } } diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index 193cc65d..cdd1e514 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -82,6 +82,7 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("User-Agent: " + userAgent); if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { + UserAgentContext.setUserAgent(userAgent); filterChain.doFilter(servletRequest, servletResponse); return; } diff --git a/src/main/java/com/iemr/tm/utils/UserAgentContext.java b/src/main/java/com/iemr/tm/utils/UserAgentContext.java new file mode 100644 index 00000000..1f6e5084 --- /dev/null +++ b/src/main/java/com/iemr/tm/utils/UserAgentContext.java @@ -0,0 +1,18 @@ +package com.iemr.tm.utils; + +public class UserAgentContext { + private static final ThreadLocal userAgentHolder = new ThreadLocal<>(); + + public static void setUserAgent(String userAgent) { + userAgentHolder.set(userAgent); + } + + public static String getUserAgent() { + return userAgentHolder.get(); + } + + public static void clear() { + userAgentHolder.remove(); + } + +} From 681977de92eecadad787a6c3a177d22b0de27d0b Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 22 May 2025 11:49:29 +0530 Subject: [PATCH 09/14] wrapper class added --- .../tm/utils/JwtUserIdValidationFilter.java | 8 +++- .../AuthorizationHeaderRequestWrapper.java | 42 +++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/iemr/tm/utils/http/AuthorizationHeaderRequestWrapper.java diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index cdd1e514..9af37d05 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -6,6 +6,8 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper; + import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; @@ -66,7 +68,8 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo if (jwtFromCookie != null) { logger.info("Validating JWT token from cookie"); if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromCookie)) { - filterChain.doFilter(servletRequest, servletResponse); + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper(request, ""); + filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); return; } } @@ -74,7 +77,8 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo if (jwtFromHeader != null) { logger.info("Validating JWT token from header"); if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) { - filterChain.doFilter(servletRequest, servletResponse); + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper(request, ""); + filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); return; } } diff --git a/src/main/java/com/iemr/tm/utils/http/AuthorizationHeaderRequestWrapper.java b/src/main/java/com/iemr/tm/utils/http/AuthorizationHeaderRequestWrapper.java new file mode 100644 index 00000000..f95533f0 --- /dev/null +++ b/src/main/java/com/iemr/tm/utils/http/AuthorizationHeaderRequestWrapper.java @@ -0,0 +1,42 @@ +package com.iemr.tm.utils.http; + +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequestWrapper; + +public class AuthorizationHeaderRequestWrapper extends HttpServletRequestWrapper { + private final String Authorization; + + public AuthorizationHeaderRequestWrapper(HttpServletRequest request, String authHeaderValue) { + super(request); + this.Authorization = authHeaderValue; + } + + @Override + public String getHeader(String name) { + if ("Authorization".equalsIgnoreCase(name)) { + return Authorization; + } + return super.getHeader(name); + } + + @Override + public Enumeration getHeaders(String name) { + if ("Authorization".equalsIgnoreCase(name)) { + return Collections.enumeration(Collections.singletonList(Authorization)); + } + return super.getHeaders(name); + } + + @Override + public Enumeration getHeaderNames() { + List names = Collections.list(super.getHeaderNames()); + if (!names.contains("Authorization")) { + names.add("Authorization"); + } + return Collections.enumeration(names); + } +} From f29182e0538f1f2dec6f530f09f9f082912516cb Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 22 May 2025 14:19:33 +0530 Subject: [PATCH 10/14] RestTemplateUtil class created for Headers --- .../CSCarestreamServiceImpl.java | 13 ++---- .../RegistrarServiceMasterDataImpl.java | 7 +-- .../transaction/CommonDoctorServiceImpl.java | 10 +---- .../common/transaction/CommonServiceImpl.java | 8 +--- .../DownloadDataFromServerImpl.java | 8 ++-- .../UploadDataToServerImpl.java | 7 +-- .../registrar/RegistrarServiceImpl.java | 43 +++---------------- .../SMSGatewayServiceImpl.java | 12 +----- .../TeleConsultationServiceImpl.java | 10 +---- .../java/com/iemr/tm/utils/CookieUtil.java | 2 +- .../tm/utils/JwtUserIdValidationFilter.java | 25 +++++------ .../com/iemr/tm/utils/RestTemplateUtil.java | 36 ++++++++++++++++ 12 files changed, 74 insertions(+), 107 deletions(-) create mode 100644 src/main/java/com/iemr/tm/utils/RestTemplateUtil.java diff --git a/src/main/java/com/iemr/tm/service/cancerScreening/CSCarestreamServiceImpl.java b/src/main/java/com/iemr/tm/service/cancerScreening/CSCarestreamServiceImpl.java index 30809c56..155641c3 100644 --- a/src/main/java/com/iemr/tm/service/cancerScreening/CSCarestreamServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/cancerScreening/CSCarestreamServiceImpl.java @@ -44,6 +44,7 @@ import com.google.gson.Gson; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.RestTemplateUtil; import jakarta.servlet.http.HttpServletRequest; @@ -63,19 +64,11 @@ public int createMamographyRequest(ArrayList benDataForCareStream, lon String Authorization) { int responseData = 0; RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); try { - // HttpHeaders headers = new HttpHeaders(); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); + String requestOBJ = getOrderCreationRequestOBJ(benDataForCareStream, benRegID, benVisitID); - HttpEntity request = new HttpEntity(requestOBJ, headers); - // System.out.println("hello"); + HttpEntity request = RestTemplateUtil.createRequestEntity(requestOBJ, Authorization); ResponseEntity response = restTemplate.exchange(carestreamOrderCreateURL, HttpMethod.POST, request, String.class); if (response != null) { diff --git a/src/main/java/com/iemr/tm/service/common/master/RegistrarServiceMasterDataImpl.java b/src/main/java/com/iemr/tm/service/common/master/RegistrarServiceMasterDataImpl.java index b23b8997..f0994fc2 100644 --- a/src/main/java/com/iemr/tm/service/common/master/RegistrarServiceMasterDataImpl.java +++ b/src/main/java/com/iemr/tm/service/common/master/RegistrarServiceMasterDataImpl.java @@ -62,6 +62,7 @@ import com.iemr.tm.repo.nurse.anc.ANCCareRepo; import com.iemr.tm.repo.registrar.BeneficiaryImageRepo; import com.iemr.tm.repo.registrar.ReistrarRepoBenSearch; +import com.iemr.tm.utils.RestTemplateUtil; @Service @PropertySource("classpath:application.properties") @@ -217,11 +218,7 @@ public String getBenDetailsForLeftSideByRegIDNew(Long beneficiaryRegID, Long ben public String getBenImageFromIdentityAPI(String Authorization, String comingRequest) throws Exception { String returnOBJ = null; RestTemplate restTemplate = new RestTemplate(); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - - HttpEntity request = new HttpEntity(comingRequest, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(comingRequest, Authorization); ResponseEntity response = restTemplate.exchange(getBenImageFromIdentity, HttpMethod.POST, request, String.class); returnOBJ = response.getBody(); diff --git a/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java b/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java index 02631d73..91b18adb 100644 --- a/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java @@ -83,6 +83,7 @@ import com.iemr.tm.service.snomedct.SnomedServiceImpl; import com.iemr.tm.service.tele_consultation.SMSGatewayServiceImpl; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.RestTemplateUtil; import com.iemr.tm.utils.exception.IEMRException; import com.iemr.tm.utils.mapper.InputMapper; import com.iemr.tm.utils.mapper.OutputMapper; @@ -989,14 +990,7 @@ public int callTmForSpecialistSlotBook(TcSpecialistSlotBookingRequestOBJ tcSpeci String requestOBJ = OutputMapper.gson().toJson(tcSpecialistSlotBookingRequestOBJ); RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - HttpEntity request = new HttpEntity(requestOBJ, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(requestOBJ, Authorization); ResponseEntity response = restTemplate.exchange(tcSpecialistSlotBook, HttpMethod.POST, request, String.class); // System.out.println(response.getBody()); diff --git a/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java b/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java index 9d1fb6bb..8f56cc7a 100644 --- a/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/common/transaction/CommonServiceImpl.java @@ -65,6 +65,7 @@ import com.iemr.tm.service.quickConsultation.QuickConsultationServiceImpl; import com.iemr.tm.service.tele_consultation.TeleConsultationServiceImpl; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.RestTemplateUtil; import com.iemr.tm.utils.exception.IEMRException; import com.iemr.tm.utils.mapper.InputMapper; @@ -553,7 +554,6 @@ public String getOpenKMDocURL(String requestOBJ, String Authorization) throws JS RestTemplate restTemplate = new RestTemplate(); HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); String fileUUID = null; JSONObject obj = new JSONObject(requestOBJ); if (obj.has("fileID")) { @@ -563,11 +563,7 @@ public String getOpenKMDocURL(String requestOBJ, String Authorization) throws JS Map requestBody = new HashMap<>(); requestBody.put("fileUID", fileUUID); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - HttpEntity request = new HttpEntity(requestBody, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(requestBody, Authorization); ResponseEntity response = restTemplate.exchange(openkmDocUrl, HttpMethod.POST, request, String.class); return response.getBody(); diff --git a/src/main/java/com/iemr/tm/service/dataSyncActivity/DownloadDataFromServerImpl.java b/src/main/java/com/iemr/tm/service/dataSyncActivity/DownloadDataFromServerImpl.java index 1e21c0bf..622dc97f 100644 --- a/src/main/java/com/iemr/tm/service/dataSyncActivity/DownloadDataFromServerImpl.java +++ b/src/main/java/com/iemr/tm/service/dataSyncActivity/DownloadDataFromServerImpl.java @@ -49,6 +49,7 @@ import com.iemr.tm.data.syncActivity_syncLayer.TempVan; import com.iemr.tm.repo.syncActivity_syncLayer.SyncDownloadMasterRepo; import com.iemr.tm.repo.syncActivity_syncLayer.TempVanRepo; +import com.iemr.tm.utils.RestTemplateUtil; import com.iemr.tm.utils.mapper.InputMapper; @Service @@ -138,11 +139,8 @@ private int downloadDataFromServer(SyncDownloadMaster syncDownloadMaster, String RestTemplate restTemplate = new RestTemplate(); // Multivalue map for headers with content-type and auth key - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", ServerAuthorization); - HttpEntity request = new HttpEntity(syncDownloadMaster, headers); - + HttpEntity request = RestTemplateUtil.createRequestEntity(syncDownloadMaster, ServerAuthorization); + // Call rest-template to call API to download master data for given table ResponseEntity response = restTemplate.exchange(dataSyncDownloadUrl, HttpMethod.POST, request, String.class); diff --git a/src/main/java/com/iemr/tm/service/dataSyncActivity/UploadDataToServerImpl.java b/src/main/java/com/iemr/tm/service/dataSyncActivity/UploadDataToServerImpl.java index d2fd8943..30ee4b92 100644 --- a/src/main/java/com/iemr/tm/service/dataSyncActivity/UploadDataToServerImpl.java +++ b/src/main/java/com/iemr/tm/service/dataSyncActivity/UploadDataToServerImpl.java @@ -46,6 +46,7 @@ import com.iemr.tm.data.syncActivity_syncLayer.DataSyncGroups; import com.iemr.tm.data.syncActivity_syncLayer.SyncUtilityClass; import com.iemr.tm.repo.syncActivity_syncLayer.DataSyncGroupsRepo; +import com.iemr.tm.utils.RestTemplateUtil; /*** * @purpose "This service is user for data sync activity from van side. Means @@ -212,11 +213,7 @@ public String syncDataToServer(String schemaName, String tableName, String vanAu String requestOBJ = gson.toJson(dataMap); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - HttpEntity request = new HttpEntity(requestOBJ, headers); - + HttpEntity request = RestTemplateUtil.createRequestEntity(requestOBJ, Authorization); ResponseEntity response = restTemplate.exchange(dataSyncUploadUrl, HttpMethod.POST, request, String.class); diff --git a/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java b/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java index ec549ba8..027e968b 100644 --- a/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java @@ -73,6 +73,7 @@ import com.iemr.tm.repo.registrar.ReistrarRepoBenSearch; import com.iemr.tm.service.benFlowStatus.CommonBenStatusFlowServiceImpl; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.RestTemplateUtil; import com.iemr.tm.utils.UserAgentContext; import com.iemr.tm.utils.mapper.InputMapper; import com.iemr.tm.utils.response.OutputResponse; @@ -658,15 +659,7 @@ public String registerBeneficiary(String comingRequest, String Authorization) th Long beneficiaryID = null; RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8"); - headers.add("User-Agent",UserAgentContext.getUserAgent()); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - HttpEntity request = new HttpEntity(comingRequest, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(comingRequest, Authorization); ResponseEntity response = restTemplate.exchange(registrationUrl, HttpMethod.POST, request, String.class); if (response.getStatusCodeValue() == 200 & response.hasBody()) { @@ -703,15 +696,7 @@ public String registerBeneficiary(String comingRequest, String Authorization) th public Integer updateBeneficiary(String comingRequest, String Authorization) throws Exception { Integer returnOBJ = null; RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); - MultiValueMap headers = new LinkedMultiValueMap(); - // headers.add("Content-Type", "application/json"); - headers.add("Content-Type", MediaType.APPLICATION_JSON + ";charset=utf-8"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - HttpEntity request = new HttpEntity(comingRequest, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(comingRequest, Authorization); ResponseEntity response = restTemplate.exchange(beneficiaryEditUrl, HttpMethod.POST, request, String.class); @@ -729,26 +714,18 @@ public Integer updateBeneficiary(String comingRequest, String Authorization) thr public String beneficiaryQuickSearch(String requestObj, String Authorization) throws JSONException { String returnOBJ = null; RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); JSONObject obj = new JSONObject(requestObj); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); + HttpEntity request = RestTemplateUtil.createRequestEntity(requestObj, Authorization); + if ((obj.has("beneficiaryID") && !obj.isNull("beneficiaryID")) || (obj.has("HealthID") && !obj.isNull("HealthID")) || (obj.has("HealthIDNumber") && !obj.isNull("HealthIDNumber"))) { - HttpEntity request = new HttpEntity(requestObj, headers); ResponseEntity response = restTemplate.exchange(registrarQuickSearchByIdUrl, HttpMethod.POST, request, String.class); if (response.hasBody()) returnOBJ = response.getBody(); - } else { if (obj.has("phoneNo") && !obj.isNull("phoneNo")) { - HttpEntity request = new HttpEntity(requestObj, headers); ResponseEntity response = restTemplate.exchange(registrarQuickSearchByPhoneNoUrl, HttpMethod.POST, request, String.class); if (response.hasBody()) @@ -763,15 +740,7 @@ public String beneficiaryQuickSearch(String requestObj, String Authorization) th public String beneficiaryAdvanceSearch(String requestObj, String Authorization) throws JSONException { String returnOBJ = null; RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); - JSONObject obj = new JSONObject(requestObj); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - HttpEntity request = new HttpEntity(requestObj, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(requestObj, Authorization); ResponseEntity response = restTemplate.exchange(registrarAdvanceSearchUrl, HttpMethod.POST, request, String.class); diff --git a/src/main/java/com/iemr/tm/service/tele_consultation/SMSGatewayServiceImpl.java b/src/main/java/com/iemr/tm/service/tele_consultation/SMSGatewayServiceImpl.java index 98fa629b..701c5963 100644 --- a/src/main/java/com/iemr/tm/service/tele_consultation/SMSGatewayServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/tele_consultation/SMSGatewayServiceImpl.java @@ -47,6 +47,7 @@ import com.iemr.tm.data.tele_consultation.SmsRequestOBJ; import com.iemr.tm.repo.tc_consultation.TCRequestModelRepo; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.RestTemplateUtil; import jakarta.servlet.http.HttpServletRequest; @@ -195,16 +196,7 @@ public String createSMSRequest(String smsType, Long benRegID, Integer specializa @Override public String sendSMS(String request, String Authorization) { - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); - HttpHeaders headers = new HttpHeaders(); - headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); - headers.set("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - - HttpEntity requestOBJ = new HttpEntity(request, headers); - + HttpEntity requestOBJ = RestTemplateUtil.createRequestEntity(request, Authorization); return restTemplate.exchange(sendSMSUrl, HttpMethod.POST, requestOBJ, String.class).getBody(); } } diff --git a/src/main/java/com/iemr/tm/service/tele_consultation/TeleConsultationServiceImpl.java b/src/main/java/com/iemr/tm/service/tele_consultation/TeleConsultationServiceImpl.java index 337e1c39..7727c636 100644 --- a/src/main/java/com/iemr/tm/service/tele_consultation/TeleConsultationServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/tele_consultation/TeleConsultationServiceImpl.java @@ -60,6 +60,7 @@ import com.iemr.tm.repo.tc_consultation.TeleconsultationStatsRepo; import com.iemr.tm.service.common.transaction.CommonServiceImpl; import com.iemr.tm.utils.CookieUtil; +import com.iemr.tm.utils.RestTemplateUtil; import com.iemr.tm.utils.mapper.InputMapper; import com.iemr.tm.utils.mapper.OutputMapper; @@ -218,14 +219,7 @@ public int cancelSlotForTCCancel(int userID, long benRegID, long visitCode, Stri String requestOBJ = OutputMapper.gson().toJson(obj); RestTemplate restTemplate = new RestTemplate(); - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); - String jwtTokenFromCookie = cookieUtil.getJwtTokenFromCookie(requestHeader); - MultiValueMap headers = new LinkedMultiValueMap(); - headers.add("Content-Type", "application/json"); - headers.add("AUTHORIZATION", Authorization); - headers.add("Cookie", "Jwttoken=" + jwtTokenFromCookie); - HttpEntity request = new HttpEntity(requestOBJ, headers); + HttpEntity request = RestTemplateUtil.createRequestEntity(requestOBJ, Authorization); ResponseEntity response = restTemplate.exchange(tcSpecialistSlotCancel, HttpMethod.POST, request, String.class); diff --git a/src/main/java/com/iemr/tm/utils/CookieUtil.java b/src/main/java/com/iemr/tm/utils/CookieUtil.java index 3071124e..b20d6256 100644 --- a/src/main/java/com/iemr/tm/utils/CookieUtil.java +++ b/src/main/java/com/iemr/tm/utils/CookieUtil.java @@ -24,7 +24,7 @@ public Optional getCookieValue(HttpServletRequest request, String cookie return Optional.empty(); } - public String getJwtTokenFromCookie(HttpServletRequest request) { + public static String getJwtTokenFromCookie(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies == null) { return null; // No cookies present, return null safely diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index 9af37d05..c6fa3c3b 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -68,27 +68,28 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo if (jwtFromCookie != null) { logger.info("Validating JWT token from cookie"); if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromCookie)) { - AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper(request, ""); + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper( + request, ""); filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); return; } - } - - if (jwtFromHeader != null) { + } else if (jwtFromHeader != null) { logger.info("Validating JWT token from header"); if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) { - AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper(request, ""); + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper( + request, ""); filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); return; } - } - String userAgent = request.getHeader("User-Agent"); - logger.info("User-Agent: " + userAgent); + } else { + String userAgent = request.getHeader("User-Agent"); + logger.info("User-Agent: " + userAgent); - if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { - UserAgentContext.setUserAgent(userAgent); - filterChain.doFilter(servletRequest, servletResponse); - return; + if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { + UserAgentContext.setUserAgent(userAgent); + filterChain.doFilter(servletRequest, servletResponse); + return; + } } logger.warn("No valid authentication token found"); diff --git a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java new file mode 100644 index 00000000..b41f942b --- /dev/null +++ b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java @@ -0,0 +1,36 @@ +package com.iemr.tm.utils; + +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import jakarta.servlet.http.HttpServletRequest; + +public class RestTemplateUtil { + public static HttpEntity createRequestEntity(Object body, String authorization) { + + HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) + .getRequest(); + String jwtTokenFromCookie = null; + try { + jwtTokenFromCookie = CookieUtil.getJwtTokenFromCookie(requestHeader); + + } catch (Exception e) { + e.printStackTrace(); + } + + MultiValueMap headers = new LinkedMultiValueMap<>(); + headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8"); + headers.add(HttpHeaders.USER_AGENT, UserAgentContext.getUserAgent()); + headers.add(HttpHeaders.AUTHORIZATION, authorization); + headers.add("JwtToken",requestHeader.getHeader("JwtToken")); + headers.add(HttpHeaders.COOKIE, "Jwttoken=" + jwtTokenFromCookie); + + return new HttpEntity<>(body, headers); + } + +} From 44a9c0e8ac2c121fb18dd0fafb497af2be7c1e90 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 22 May 2025 14:49:52 +0530 Subject: [PATCH 11/14] code rabbit issues fixed --- .../com/iemr/tm/utils/JwtUserIdValidationFilter.java | 8 ++++++-- src/main/java/com/iemr/tm/utils/RestTemplateUtil.java | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index c6fa3c3b..daac8228 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -86,8 +86,12 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo logger.info("User-Agent: " + userAgent); if (userAgent != null && isMobileClient(userAgent) && authHeader != null) { - UserAgentContext.setUserAgent(userAgent); - filterChain.doFilter(servletRequest, servletResponse); + try { + UserAgentContext.setUserAgent(userAgent); + filterChain.doFilter(servletRequest, servletResponse); + } finally { + UserAgentContext.clear(); + } return; } } diff --git a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java index b41f942b..05d07ba7 100644 --- a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java +++ b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java @@ -13,8 +13,14 @@ public class RestTemplateUtil { public static HttpEntity createRequestEntity(Object body, String authorization) { - HttpServletRequest requestHeader = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()) - .getRequest(); + ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()); + if (servletRequestAttributes == null) { + MultiValueMap headers = new LinkedMultiValueMap<>(); + headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8"); + headers.add(HttpHeaders.AUTHORIZATION, authorization); + return new HttpEntity<>(body, headers); + } + HttpServletRequest requestHeader = servletRequestAttributes.getRequest(); String jwtTokenFromCookie = null; try { jwtTokenFromCookie = CookieUtil.getJwtTokenFromCookie(requestHeader); From 4d24d28d36fff14da3b07733f2a92d588f52adae Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 22 May 2025 15:31:50 +0530 Subject: [PATCH 12/14] if condition added --- .../java/com/iemr/tm/utils/JwtUserIdValidationFilter.java | 4 ++-- .../java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java index daac8228..85379437 100644 --- a/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/tm/utils/JwtUserIdValidationFilter.java @@ -68,7 +68,7 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo if (jwtFromCookie != null) { logger.info("Validating JWT token from cookie"); if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromCookie)) { - AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper( + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper( request, ""); filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); return; @@ -76,7 +76,7 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo } else if (jwtFromHeader != null) { logger.info("Validating JWT token from header"); if (jwtAuthenticationUtil.validateUserIdAndJwtToken(jwtFromHeader)) { - AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new com.iemr.tm.utils.http.AuthorizationHeaderRequestWrapper( + AuthorizationHeaderRequestWrapper authorizationHeaderRequestWrapper = new AuthorizationHeaderRequestWrapper( request, ""); filterChain.doFilter(authorizationHeaderRequestWrapper, servletResponse); return; 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 32acd8f3..2da14401 100644 --- a/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java +++ b/src/main/java/com/iemr/tm/utils/http/HTTPRequestInterceptor.java @@ -57,7 +57,10 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons authorization=preAuth.replace("Bearer ", ""); else authorization = preAuth; - + if (authorization == null || authorization.isEmpty()) { + logger.info("Authorization header is null or empty. Skipping HTTPRequestInterceptor."); + return true; // Allow the request to proceed without validation + } logger.debug("RequestURI::" + request.getRequestURI() + " || Authorization ::" + authorization + " || method :: " + request.getMethod()); if (!request.getMethod().equalsIgnoreCase("OPTIONS")) { From 97659e70e2ba6198af907c59d36b50bf626f1a41 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 22 May 2025 19:47:23 +0530 Subject: [PATCH 13/14] null check --- .../java/com/iemr/tm/utils/RestTemplateUtil.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java index 05d07ba7..e9e6dafd 100644 --- a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java +++ b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java @@ -1,5 +1,7 @@ package com.iemr.tm.utils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -11,6 +13,8 @@ import jakarta.servlet.http.HttpServletRequest; public class RestTemplateUtil { + private final static Logger logger = LoggerFactory.getLogger(RestTemplateUtil.class); + public static HttpEntity createRequestEntity(Object body, String authorization) { ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()); @@ -26,17 +30,21 @@ public static HttpEntity createRequestEntity(Object body, String authori jwtTokenFromCookie = CookieUtil.getJwtTokenFromCookie(requestHeader); } catch (Exception e) { - e.printStackTrace(); + logger.error("Error while getting jwtToken from Cookie" + e.getMessage() ); } MultiValueMap headers = new LinkedMultiValueMap<>(); headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8"); - headers.add(HttpHeaders.USER_AGENT, UserAgentContext.getUserAgent()); + if(null != UserAgentContext.getUserAgent()) { + headers.add(HttpHeaders.USER_AGENT, UserAgentContext.getUserAgent()); + } headers.add(HttpHeaders.AUTHORIZATION, authorization); headers.add("JwtToken",requestHeader.getHeader("JwtToken")); - headers.add(HttpHeaders.COOKIE, "Jwttoken=" + jwtTokenFromCookie); + if(null != jwtTokenFromCookie) { + headers.add(HttpHeaders.COOKIE, "Jwttoken=" + jwtTokenFromCookie); + } return new HttpEntity<>(body, headers); } -} +} \ No newline at end of file From 72e58391f5639fc78331f923b8f21ef178f1f105 Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Fri, 23 May 2025 21:24:42 +0530 Subject: [PATCH 14/14] loggers Added --- .../java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java | 1 + src/main/java/com/iemr/tm/utils/RestTemplateUtil.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java b/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java index 027e968b..3840a777 100644 --- a/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java +++ b/src/main/java/com/iemr/tm/service/registrar/RegistrarServiceImpl.java @@ -660,6 +660,7 @@ public String registerBeneficiary(String comingRequest, String Authorization) th RestTemplate restTemplate = new RestTemplate(); HttpEntity request = RestTemplateUtil.createRequestEntity(comingRequest, Authorization); + logger.info("Before Calling Common-API registration : "+request.getHeaders()); ResponseEntity response = restTemplate.exchange(registrationUrl, HttpMethod.POST, request, String.class); if (response.getStatusCodeValue() == 200 & response.hasBody()) { diff --git a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java index e9e6dafd..512ce658 100644 --- a/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java +++ b/src/main/java/com/iemr/tm/utils/RestTemplateUtil.java @@ -19,6 +19,7 @@ public static HttpEntity createRequestEntity(Object body, String authori ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()); if (servletRequestAttributes == null) { + logger.info("Null servletRequestAttributes"); MultiValueMap headers = new LinkedMultiValueMap<>(); headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE + ";charset=utf-8"); headers.add(HttpHeaders.AUTHORIZATION, authorization);