From 7e5e941868330c670efbe914272a04e8ba5ba7cb Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 17 Apr 2025 14:10:00 +0530 Subject: [PATCH 1/3] Swagger enabled changes --- src/main/environment/admin_ci.properties | 5 ++++- src/main/environment/admin_dev.properties | 5 ++++- src/main/environment/admin_example.properties | 5 ++++- src/main/environment/admin_test.properties | 6 ++++-- src/main/environment/admin_uat.properties | 3 +++ .../com/iemr/admin/utils/JwtUserIdValidationFilter.java | 2 ++ 6 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/environment/admin_ci.properties b/src/main/environment/admin_ci.properties index 0125bb9..89071c7 100644 --- a/src/main/environment/admin_ci.properties +++ b/src/main/environment/admin_ci.properties @@ -19,4 +19,7 @@ jwt.secret=@env.JWT_SECRET_KEY@ #ELK logging file name logging.file.name=@env.ADMIN_API_LOGGING_FILE_NAME@ -common-url=@env.COMMON_URL@ \ No newline at end of file +common-url=@env.COMMON_URL@ + +springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@ +springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@ \ No newline at end of file diff --git a/src/main/environment/admin_dev.properties b/src/main/environment/admin_dev.properties index 9a808ae..759320c 100644 --- a/src/main/environment/admin_dev.properties +++ b/src/main/environment/admin_dev.properties @@ -16,4 +16,7 @@ videoConsultation-base-url=https://psmri.swymed.com:92744 spring.redis.host=localhost spring.main.allow-bean-definition-overriding=true -common-url=http://localhost:8083/ \ No newline at end of file +common-url=http://localhost:8083/, + +springdoc.api-docs.enabled=true +springdoc.swagger-ui.enabled=true diff --git a/src/main/environment/admin_example.properties b/src/main/environment/admin_example.properties index c705703..e22cee6 100644 --- a/src/main/environment/admin_example.properties +++ b/src/main/environment/admin_example.properties @@ -15,4 +15,7 @@ videoConsultation-base-url=https://psmri.swymed.com:9274 spring.redis.host=localhost spring.main.allow-bean-definition-overriding=true -common-url=http://localhost:8083/ \ No newline at end of file +common-url=http://localhost:8083/ + +springdoc.api-docs.enabled=true +springdoc.swagger-ui.enabled=true diff --git a/src/main/environment/admin_test.properties b/src/main/environment/admin_test.properties index cb0e9f7..4ae32e2 100644 --- a/src/main/environment/admin_test.properties +++ b/src/main/environment/admin_test.properties @@ -10,11 +10,13 @@ callcentre-server-ip=10.208.122.99 videoConsultation-apikey= videoConsultation-base-url=https://psmri.swymed.com:9274 - - ### Redis IP spring.redis.host=localhost spring.main.allow-bean-definition-overriding=true jwt.secret= common-url=http://localhost:8083/ + +springdoc.api-docs.enabled=true +springdoc.swagger-ui.enabled=true + diff --git a/src/main/environment/admin_uat.properties b/src/main/environment/admin_uat.properties index 6111e23..c1c4c55 100644 --- a/src/main/environment/admin_uat.properties +++ b/src/main/environment/admin_uat.properties @@ -17,3 +17,6 @@ spring.redis.host=localhost spring.main.allow-bean-definition-overriding=true common-url=http://localhost:8083/ +springdoc.api-docs.enabled=true +springdoc.swagger-ui.enabled=true + diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index 7fe71e4..a376757 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -55,6 +55,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 + "/public")) { logger.info("Skipping filter for path: " + path); filterChain.doFilter(servletRequest, servletResponse); From f91def4e0ef0eb697afe03f0662d2b7bdf14e5ff Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Thu, 17 Apr 2025 14:33:50 +0530 Subject: [PATCH 2/3] Swagger changes --- src/main/environment/admin_ci.properties | 2 +- .../java/com/iemr/admin/utils/JwtUserIdValidationFilter.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/environment/admin_ci.properties b/src/main/environment/admin_ci.properties index 89071c7..508b7bf 100644 --- a/src/main/environment/admin_ci.properties +++ b/src/main/environment/admin_ci.properties @@ -22,4 +22,4 @@ logging.file.name=@env.ADMIN_API_LOGGING_FILE_NAME@ common-url=@env.COMMON_URL@ springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@ -springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@ \ No newline at end of file +springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@ diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index a376757..ddee195 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java @@ -57,6 +57,7 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletRespo || 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 d2d44c42d75a9b06bd0b89801e858b4c83b7c67e Mon Sep 17 00:00:00 2001 From: Ravi Shanigarapu Date: Tue, 20 May 2025 16:55:00 +0530 Subject: [PATCH 3/3] AMM-1456 --- .../utils/JwtUserIdValidationFilter.java | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java b/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java index ddee195..7cae90e 100644 --- a/src/main/java/com/iemr/admin/utils/JwtUserIdValidationFilter.java +++ b/src/main/java/com/iemr/admin/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: "); } } - + private boolean isMobileClient(String userAgent) { + if (userAgent == null) + return false; + userAgent = userAgent.toLowerCase(); + return userAgent.contains("okhttp"); + } private String getJwtTokenFromCookies(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); if (cookies != null) {