From 9572f4492ff131fd8d390925175819258771b202 Mon Sep 17 00:00:00 2001 From: Risto Lahtela <24460436+Rsl1122@users.noreply.github.com> Date: Sat, 16 May 2020 09:13:22 +0300 Subject: [PATCH] Remove given register information after 15 min of closing the page Affects issues: - #1446 --- .../webserver/auth/RegistrationBin.java | 17 ++++++++++++----- .../resources/assets/plan/web/register.html | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/RegistrationBin.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/RegistrationBin.java index 04bf37309..d24390e16 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/RegistrationBin.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/auth/RegistrationBin.java @@ -18,9 +18,14 @@ package com.djrapitops.plan.delivery.webserver.auth; import com.djrapitops.plan.delivery.domain.auth.User; import com.djrapitops.plan.utilities.PassEncryptUtil; +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; import org.apache.commons.codec.digest.DigestUtils; -import java.util.*; +import java.util.Collections; +import java.util.Optional; +import java.util.UUID; +import java.util.concurrent.TimeUnit; /** * Holds registrations of users before they are confirmed. @@ -29,7 +34,9 @@ import java.util.*; */ public class RegistrationBin { - private static final Map REGISTRATION_BIN = new HashMap<>(); + private static final Cache REGISTRATION_BIN = Caffeine.newBuilder() + .expireAfterAccess(15, TimeUnit.MINUTES) + .build(); public static String addInfoForRegistration(String username, String password) { String hash = PassEncryptUtil.createHash(password); @@ -39,14 +46,14 @@ public class RegistrationBin { } public static Optional register(String code, UUID linkedToUUID) { - AwaitingForRegistration found = REGISTRATION_BIN.get(code); + AwaitingForRegistration found = REGISTRATION_BIN.getIfPresent(code); if (found == null) return Optional.empty(); - REGISTRATION_BIN.remove(code); + REGISTRATION_BIN.invalidate(code); return Optional.of(found.toUser(linkedToUUID)); } public static boolean contains(String code) { - return REGISTRATION_BIN.containsKey(code); + return REGISTRATION_BIN.getIfPresent(code) != null; } private static class AwaitingForRegistration { diff --git a/Plan/common/src/main/resources/assets/plan/web/register.html b/Plan/common/src/main/resources/assets/plan/web/register.html index adc2ef908..4493938e6 100644 --- a/Plan/common/src/main/resources/assets/plan/web/register.html +++ b/Plan/common/src/main/resources/assets/plan/web/register.html @@ -98,8 +98,8 @@