diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/ActiveCookieStore.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/ActiveCookieStore.java index 69c9d9f8f..8fc84ddfc 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/ActiveCookieStore.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/ActiveCookieStore.java @@ -17,19 +17,23 @@ package com.djrapitops.plan.delivery.webserver.auth; import com.djrapitops.plan.delivery.domain.auth.User; +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; import org.apache.commons.codec.digest.DigestUtils; -import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.TimeUnit; public class ActiveCookieStore { - private static final Map USERS_BY_COOKIE = new HashMap<>(); + private static final Cache USERS_BY_COOKIE = Caffeine.newBuilder() + .expireAfterWrite(2, TimeUnit.HOURS) + .build(); public static Optional checkCookie(String cookie) { - return Optional.ofNullable(USERS_BY_COOKIE.get(cookie)); + return Optional.ofNullable(USERS_BY_COOKIE.getIfPresent(cookie)); } public static String generateNewCookie(User user) { @@ -39,11 +43,11 @@ public class ActiveCookieStore { } public static void removeCookie(String cookie) { - USERS_BY_COOKIE.remove(cookie); + USERS_BY_COOKIE.invalidate(cookie); } public static void removeCookie(User user) { - USERS_BY_COOKIE.entrySet().stream().filter(entry -> entry.getValue().getUsername().equals(user.getUsername())) + USERS_BY_COOKIE.asMap().entrySet().stream().filter(entry -> entry.getValue().getUsername().equals(user.getUsername())) .findAny() .map(Map.Entry::getKey) .ifPresent(ActiveCookieStore::removeCookie);