diff --git a/src/main/java/edu/umd/dawn/common/annotations/RoleRestrictionAspect.java b/src/main/java/edu/umd/dawn/common/annotations/RoleRestrictionAspect.java index 278361837ca3678fdaa5fbbdaeff639a6a541d1a..a562b5a64fa1f2923624ee802384d782c6747dc3 100644 --- a/src/main/java/edu/umd/dawn/common/annotations/RoleRestrictionAspect.java +++ b/src/main/java/edu/umd/dawn/common/annotations/RoleRestrictionAspect.java @@ -6,7 +6,6 @@ import edu.umd.dawn.common.exceptions.DawnException; import edu.umd.dawn.common.jwt.Claims; import edu.umd.dawn.common.services.UserAuthService; import jakarta.servlet.http.HttpServletRequest; -import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; diff --git a/src/main/java/edu/umd/dawn/common/interceptor/JWTInterceptor.java b/src/main/java/edu/umd/dawn/common/interceptor/JWTInterceptor.java index a202269d74d1fa6ad84274a970486e47ecccefba..1e1f5f464d91dc1f651c705c439e8f908d7a5481 100644 --- a/src/main/java/edu/umd/dawn/common/interceptor/JWTInterceptor.java +++ b/src/main/java/edu/umd/dawn/common/interceptor/JWTInterceptor.java @@ -5,7 +5,6 @@ import edu.umd.dawn.common.jwt.JWTUtil; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.log4j.Log4j2; - import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @@ -30,13 +29,14 @@ public class JWTInterceptor implements HandlerInterceptor { @Value("${config.accessSecret:empty}") private String accessSecret; - @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (accessSecret.equals("empty")) { - log.warn("This service has not been provided the configuration value for `config.accessSecret` in the application.properties configuration. Since it uses the JWTInterceptor, this is a required value for proper functionality."); + log.warn("This service has not been provided the configuration value for `config.accessSecret` in the" + + " application.properties configuration. Since it uses the JWTInterceptor, this is a required" + + " value for proper functionality."); } if (!local) { diff --git a/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java b/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java index bfcad4786ae6c41c4a29d9ed190727872664cdbb..c1ee63859c6e2716b82ac563f9d66b313ffc4c6f 100644 --- a/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java +++ b/src/main/java/edu/umd/dawn/common/interceptor/RequestInterceptor.java @@ -24,10 +24,10 @@ import org.springframework.web.servlet.HandlerMapping; public class RequestInterceptor implements HandlerInterceptor { private String TRACE_HEADER = "X-Request-Id"; - + @Value("${config.serviceName:dawn-service}") private String serviceName; - + @Value("${config.accessSecret:empty}") private String accessSecret; @@ -103,6 +103,10 @@ public class RequestInterceptor implements HandlerInterceptor { Map<String, String> headers = getRequestHeaders(request); Claims claims = new DawnHttpServletRequestWrapper(request, accessSecret).getClaims(); + String userId = ""; + if (claims != null) { + userId = claims.getUserId(); + } RequestLog requestLog = RequestLog.builder() .path(path) @@ -112,7 +116,7 @@ public class RequestInterceptor implements HandlerInterceptor { .parameters(getParemeters(request)) .duration(executeTime) .userAgent(userAgentService.parse(headers)) - .userId(claims.getUserId()) + .userId(userId) .build(); log.log(Level.forName("REQUEST", 10), requestLog); diff --git a/src/main/java/edu/umd/dawn/common/logging/RequestLog.java b/src/main/java/edu/umd/dawn/common/logging/RequestLog.java index 60088d0db42fcde4a4017568a2d8f7f70d2a39aa..0a85c318bc531bdbf63ba87825652a4791fb1dbb 100644 --- a/src/main/java/edu/umd/dawn/common/logging/RequestLog.java +++ b/src/main/java/edu/umd/dawn/common/logging/RequestLog.java @@ -1,9 +1,8 @@ package edu.umd.dawn.common.logging; +import edu.umd.dawn.common.models.UserAgent; import java.util.List; import java.util.Map; - -import edu.umd.dawn.common.models.UserAgent; import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/edu/umd/dawn/common/models/UserAgent.java b/src/main/java/edu/umd/dawn/common/models/UserAgent.java index 278b71e52b7a06e2236c77a0b9d0300fe31e664e..d3d8d4872931623621b0e631ddc67b95376cb98a 100644 --- a/src/main/java/edu/umd/dawn/common/models/UserAgent.java +++ b/src/main/java/edu/umd/dawn/common/models/UserAgent.java @@ -7,13 +7,15 @@ import lombok.Data; @Builder public class UserAgent { - @Builder.Default private boolean bot = false; + @Builder.Default private boolean tablet = false; + @Builder.Default private boolean mobile = false; + @Builder.Default private boolean desktop = false; @@ -22,5 +24,4 @@ public class UserAgent { private String osVersion; private String name; private String version; - } diff --git a/src/main/java/edu/umd/dawn/common/services/UserAgentService.java b/src/main/java/edu/umd/dawn/common/services/UserAgentService.java index 65c950f4b56146ad96c17ca351b9ab5aa3911820..345ed5a0e28aa6aa1e29a001153f17f7e11b525f 100644 --- a/src/main/java/edu/umd/dawn/common/services/UserAgentService.java +++ b/src/main/java/edu/umd/dawn/common/services/UserAgentService.java @@ -1,24 +1,20 @@ package edu.umd.dawn.common.services; -import org.springframework.stereotype.Service; +import static nl.basjes.parse.useragent.classify.DeviceClass.PHONE; +import static nl.basjes.parse.useragent.classify.DeviceClass.TABLET; import edu.umd.dawn.common.models.UserAgent.UserAgentBuilder; +import java.util.Map; import nl.basjes.parse.useragent.UserAgent; import nl.basjes.parse.useragent.UserAgentAnalyzer; - -import static nl.basjes.parse.useragent.classify.DeviceClass.TABLET; - -import java.util.Map; - -import static nl.basjes.parse.useragent.classify.DeviceClass.PHONE;; +import org.springframework.stereotype.Service; @Service public class UserAgentService { - private UserAgentAnalyzer uaa = UserAgentAnalyzer - .newBuilder() - .hideMatcherLoadStats() - .withCache(10000) - .build(); + private UserAgentAnalyzer uaa = UserAgentAnalyzer.newBuilder() + .hideMatcherLoadStats() + .withCache(10000) + .build(); private UserAgentBuilder setDeviceType(UserAgent ua, UserAgentBuilder builder) { String deviceType = ua.get(UserAgent.DEVICE_CLASS).getValue().toLowerCase(); @@ -45,7 +41,6 @@ public class UserAgentService { builder.name(ua.get(UserAgent.AGENT_NAME).getValue()); builder.version(ua.get(UserAgent.AGENT_VERSION).getValue()); - return builder.build(); } } diff --git a/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java b/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java index f2e21ba6991ec83b3a55f6659c87191836537966..98b8ea68dfc3d8df0cd1b561b78b3a5046e07f87 100644 --- a/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java +++ b/src/main/java/edu/umd/dawn/common/wrappers/DawnHttpServletRequestWrapper.java @@ -22,6 +22,7 @@ public class DawnHttpServletRequestWrapper extends HttpServletRequestWrapper { /** * try everything possible to get the claims + * eventually, we will be requiring jwts everywhere so this wont need to be so complex * @return */ public Claims getClaims() { @@ -31,7 +32,9 @@ public class DawnHttpServletRequestWrapper extends HttpServletRequestWrapper { } if (accessSecret.equals("empty")) { - log.warn("This service has not been provided the configuration value for `config.accessSecret` in the application.properties configuration. Since it uses the JWTInterceptor, this is a required value for proper functionality."); + log.warn("This service has not been provided the configuration value for `config.accessSecret` in the" + + " application.properties configuration. Since it uses the JWTInterceptor, this is a required" + + " value for proper functionality."); } String token = (String) getAttribute("token"); @@ -53,7 +56,5 @@ public class DawnHttpServletRequestWrapper extends HttpServletRequestWrapper { } return null; - } - }