From aa3b831a68513a76296be8aace3c98dfd84ceb97 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Mon, 19 Feb 2024 21:48:42 -0500 Subject: [PATCH] [O] Separate randExtId --- src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt | 6 ++++-- .../icu/samnyan/aqua/sega/general/service/CardService.kt | 8 ++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt b/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt index 63885719..c16ac97d 100644 --- a/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt +++ b/src/main/java/icu/samnyan/aqua/net/UserRegistrar.kt @@ -10,6 +10,7 @@ import icu.samnyan.aqua.net.db.AquaNetUserRepo import icu.samnyan.aqua.net.db.EmailConfirmationRepo import icu.samnyan.aqua.sega.general.dao.CardRepository import icu.samnyan.aqua.sega.general.model.Card +import icu.samnyan.aqua.sega.general.service.CardService import jakarta.servlet.http.HttpServletRequest import org.springframework.security.crypto.password.PasswordEncoder import org.springframework.web.bind.annotation.PostMapping @@ -29,7 +30,8 @@ class UserRegistrar( val geoIP: GeoIP, val jwt: JWT, val confirmationRepo: EmailConfirmationRepo, - val cardRepo: CardRepository + val cardRepo: CardRepository, + val cardService: CardService ) { companion object { // Random long with length 19 (10^19 possibilities) @@ -80,7 +82,7 @@ class UserRegistrar( // Create a ghost card val card = Card().apply { - extId = Random().nextLong(cardExtIdStart, cardExtIdEnd) + extId = cardService.randExtID(cardExtIdStart, cardExtIdEnd) luid = extId.toString() registerTime = LocalDateTime.now() accessTime = registerTime diff --git a/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt b/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt index 1e0120b5..22187d12 100644 --- a/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt +++ b/src/main/java/icu/samnyan/aqua/sega/general/service/CardService.kt @@ -52,4 +52,12 @@ class CardService(val cardRepo: CardRepository) { accessTime = registerTime }) } + + fun randExtID(lower: Long = 0, upper: Long = 99999999): Long { + var eid = ThreadLocalRandom.current().nextLong(lower, upper) + while (cardRepo.findByExtId(eid).isPresent) { + eid = ThreadLocalRandom.current().nextLong(lower, upper) + } + return eid + } }