diff --git a/src/main/java/edu/umd/dawn/common/jwt/JWTContext.java b/src/main/java/edu/umd/dawn/common/jwt/JWTContext.java new file mode 100644 index 0000000000000000000000000000000000000000..b8c0f0117a1e78640890674c284d329617bfe658 --- /dev/null +++ b/src/main/java/edu/umd/dawn/common/jwt/JWTContext.java @@ -0,0 +1,42 @@ +package edu.umd.dawn.common.jwt; + +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import edu.umd.dawn.common.exceptions.BaseExceptions; +import edu.umd.dawn.common.exceptions.DawnException; +import edu.umd.dawn.common.wrappers.DawnHttpServletRequestWrapper; +import jakarta.annotation.PostConstruct; +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Value; + +/** + * Using this context REQUIRES that a jwt is passed + */ +@Component +public class JWTContext { + @Value("${config.jwt.warn:true}") + private boolean warn; + + @Value("${config.accessSecret:empty}") + private String accessSecret; + + /** + * try everything possible to get the claims - fail if we can't + * @return + */ + public Claims getClaims() { + HttpServletRequest request = + ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest(); + + DawnHttpServletRequestWrapper wrappedRequest = new DawnHttpServletRequestWrapper(request, accessSecret); + Claims claims = wrappedRequest.getClaims(); + if (claims == null) { + throw new DawnException(BaseExceptions.INVALID_JWT); + } + + return claims; + } +}