From c1703322aa9385a1f56e43b6340550a450cc7d23 Mon Sep 17 00:00:00 2001 From: mofobo Date: Wed, 30 Mar 2022 09:27:02 +0200 Subject: [PATCH] implement cache for user authorization data --- .../AbstractIdentityAuthorizationClient.java | 12 ++++++++++++ .../internal/DefaultIdentityAuthorizationClient.java | 1 + .../gateway/service/OtpRevocationService.java | 1 + 3 files changed, 14 insertions(+) diff --git a/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/AbstractIdentityAuthorizationClient.java b/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/AbstractIdentityAuthorizationClient.java index 2e3f140..df517cb 100644 --- a/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/AbstractIdentityAuthorizationClient.java +++ b/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/AbstractIdentityAuthorizationClient.java @@ -8,6 +8,9 @@ import ch.admin.bag.covidcertificate.gateway.service.dto.CreateCertificateException; import ch.admin.bag.covidcertificate.gateway.service.model.UserAuthorizationData; import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.util.StringUtils; import java.util.Collection; @@ -23,8 +26,11 @@ @Slf4j public abstract class AbstractIdentityAuthorizationClient implements IdentityAuthorizationClient { + private static final String USER_AUTHORIZATION_DATA_CACHE = "USER_AUTHORIZATION_DATA_CACHE"; + protected abstract User searchUser(String uuid, String idpSource); + @Cacheable(USER_AUTHORIZATION_DATA_CACHE) @Override public UserAuthorizationData fetchUserAndGetAuthData(String uuid, String idpSource) { if (!StringUtils.hasText(uuid) || !StringUtils.hasText(idpSource)) { @@ -53,4 +59,10 @@ public UserAuthorizationData fetchUserAndGetAuthData(String uuid, String idpSour log.trace("Authorization checked successfully."); return new UserAuthorizationData(uuid, idpSource, roles); } + + @Scheduled(fixedRateString = "${cc-api-gateway-service.cache-duration}") + @CacheEvict(value = USER_AUTHORIZATION_DATA_CACHE, allEntries = true) + public void cleanUserAuthorizationDataCache() { + log.info("Cleaning cache of user autorization data."); + } } diff --git a/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/DefaultIdentityAuthorizationClient.java b/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/DefaultIdentityAuthorizationClient.java index a1becf6..5c76acd 100644 --- a/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/DefaultIdentityAuthorizationClient.java +++ b/src/main/java/ch/admin/bag/covidcertificate/gateway/client/internal/DefaultIdentityAuthorizationClient.java @@ -8,6 +8,7 @@ import ch.admin.bag.covidcertificate.gateway.web.config.ProfileRegistry; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; diff --git a/src/main/java/ch/admin/bag/covidcertificate/gateway/service/OtpRevocationService.java b/src/main/java/ch/admin/bag/covidcertificate/gateway/service/OtpRevocationService.java index 8df1ede..249c441 100644 --- a/src/main/java/ch/admin/bag/covidcertificate/gateway/service/OtpRevocationService.java +++ b/src/main/java/ch/admin/bag/covidcertificate/gateway/service/OtpRevocationService.java @@ -28,6 +28,7 @@ public List getOtpRevocations() { @Scheduled(fixedRateString = "${cc-api-gateway-service.cache-duration}") @CacheEvict(value = OTP_CACHE_NAME, allEntries = true) public void clearCache() { + log.info("Cleaning cache of otps list."); } }