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) { + + } + +}