From 2f928146574e7137083bc3f28d28257974c29a3c Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 27 Jun 2023 22:37:16 +0300 Subject: [PATCH] RED-6686 - token based web request interceptor --- .../JwtBasedTenantInterceptor.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/com/knecon/fforesight/keycloakcommons/JwtBasedTenantInterceptor.java diff --git a/src/main/java/com/knecon/fforesight/keycloakcommons/JwtBasedTenantInterceptor.java b/src/main/java/com/knecon/fforesight/keycloakcommons/JwtBasedTenantInterceptor.java new file mode 100644 index 0000000..36f52ba --- /dev/null +++ b/src/main/java/com/knecon/fforesight/keycloakcommons/JwtBasedTenantInterceptor.java @@ -0,0 +1,41 @@ +package com.knecon.fforesight.keycloakcommons; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.stereotype.Component; +import org.springframework.ui.ModelMap; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.context.request.WebRequestInterceptor; + +import com.knecon.fforesight.keycloakcommons.security.TokenRealmService; +import com.knecon.fforesight.tenantcommons.TenantContext; + +import lombok.RequiredArgsConstructor; + +@Component +@RequiredArgsConstructor +@ConditionalOnClass(WebRequestInterceptor.class) +public class JwtBasedTenantInterceptor implements WebRequestInterceptor { + + private final TokenRealmService tokenRealmService; + + + @Override + public void preHandle(WebRequest request) { + + tokenRealmService.getRealm().ifPresent(TenantContext::setTenantId); + } + + + @Override + public void postHandle(WebRequest request, ModelMap model) { + + TenantContext.clear(); + } + + + @Override + public void afterCompletion(WebRequest request, Exception ex) { + + } + +}