Skip to content

Commit b84481c

Browse files
committed
FEAT: ISOLATED PRICING TOKEN FROM AUTH CONFIGURATION
1 parent 967f9fc commit b84481c

2 files changed

Lines changed: 28 additions & 8 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>io.github.isa-group</groupId>
99
<artifactId>Pricing4Java</artifactId>
10-
<version>3.1.0</version>
10+
<version>3.3.0</version>
1111

1212
<name>${project.groupId}:${project.artifactId}</name>
1313
<description>A pricing driven feature toggling library for java</description>

src/main/java/io/github/isagroup/filters/RenewTokenFilter.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import io.github.isagroup.PricingEvaluatorUtil;
1717
import io.github.isagroup.services.jwt.JwtUtils;
1818

19+
import java.util.Map;
20+
1921
public 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

Comments
 (0)