1616import io .github .isagroup .PricingEvaluatorUtil ;
1717import io .github .isagroup .services .jwt .JwtUtils ;
1818
19+ import java .util .Map ;
20+
1921public class RenewTokenFilter extends OncePerRequestFilter {
2022
2123 @ Autowired
@@ -35,17 +37,25 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
3537 throws ServletException , IOException {
3638
3739 try {
38- String jwt = parseJwt (request );
40+ String pricingJwt = parsePricingJwt (request );
41+ String authJwt = parseAuthJwt (request );
3942
40- if (jwt != null && jwtUtils .validateJwtToken (jwt ) && pricingContext .userAffectedByPricing ()) {
43+ if (authJwt != null && jwtUtils .validateJwtToken (authJwt ) && pricingContext .userAffectedByPricing ()) {
4144
4245 String newToken = pricingEvaluatorUtil .generateUserToken ();
4346
44- String newTokenFeatures = jwtUtils .getFeaturesFromJwtToken (newToken ).toString ();
45- String jwtFeatures = jwtUtils .getFeaturesFromJwtToken (jwt ).toString ();
47+ Map <String , Map <String , Object >> newTokenFeatures = jwtUtils .getFeaturesFromJwtToken (newToken );
48+ Map <String , Map <String , Object >> jwtFeatures = jwtUtils .getFeaturesFromJwtToken (pricingJwt );
49+
50+ String newTokenFeaturesString = "" ;
51+ String jwtFeaturesString = "" ;
4652
47- if (!newTokenFeatures .equals (jwtFeatures )) {
48- response .addHeader ("New-Token" , newToken );
53+ if (newTokenFeatures != null ) newTokenFeaturesString = newTokenFeatures .toString ();
54+
55+ if (jwtFeatures != null ) jwtFeaturesString = jwtFeatures .toString ();
56+
57+ if (!newTokenFeaturesString .equals (jwtFeaturesString )) {
58+ response .addHeader ("Pricing-Token" , newToken );
4959 }
5060 }
5161 } catch (Exception e ) {
@@ -56,7 +66,17 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
5666 filterChain .doFilter (request , response );
5767 }
5868
59- private String parseJwt (HttpServletRequest request ) {
69+ private String parsePricingJwt (HttpServletRequest request ) {
70+ String headerPricing = request .getHeader ("Pricing-Token" );
71+
72+ if (StringUtils .hasText (headerPricing )) {
73+ return headerPricing ;
74+ }
75+
76+ return null ;
77+ }
78+
79+ private String parseAuthJwt (HttpServletRequest request ) {
6080 String headerAuth = request .getHeader ("Authorization" );
6181
6282 if (StringUtils .hasText (headerAuth ) && headerAuth .startsWith ("Bearer " )) {
0 commit comments