From 2b7a8b97e1a0d5834586a1eb2e77f21c676a3848 Mon Sep 17 00:00:00 2001 From: vladp Date: Sat, 10 Jan 2026 02:09:39 +0700 Subject: [PATCH] NCBACK-27 fix token life --- .../nocopy/repository/AuthTokenRepository.java | 3 ++- .../ru/soune/nocopy/service/auth/AuthService.java | 1 + .../service/auth/CleanupTokenSessionsService.java | 13 ++++++------- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java b/src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java index 9328753..cbd7529 100644 --- a/src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/AuthTokenRepository.java @@ -5,11 +5,12 @@ import org.springframework.stereotype.Repository; import ru.soune.nocopy.entity.AuthToken; import java.time.LocalDateTime; +import java.util.List; import java.util.Optional; @Repository public interface AuthTokenRepository extends JpaRepository { - Optional findByLastUsedAtAndExpiresAtBefore(LocalDateTime lastUsedAt, LocalDateTime expiresAtBefore); + List findByExpiresAtBefore(LocalDateTime expiresAtBefore); Optional findByLastUsedAtBefore(LocalDateTime lastUsedAt); Optional findByToken(String token); } diff --git a/src/main/java/ru/soune/nocopy/service/auth/AuthService.java b/src/main/java/ru/soune/nocopy/service/auth/AuthService.java index cf8b18c..f14d6d1 100644 --- a/src/main/java/ru/soune/nocopy/service/auth/AuthService.java +++ b/src/main/java/ru/soune/nocopy/service/auth/AuthService.java @@ -92,6 +92,7 @@ public class AuthService { AuthToken authToken = authTokenRepository.findByToken(token) .orElseThrow(() -> new NotFoundAuthToken("Token not found")); authToken.setLastUsedAt(LocalDateTime.now()); + authToken.setExpiresAt(LocalDateTime.now().plusHours(1)); authTokenRepository.save(authToken); diff --git a/src/main/java/ru/soune/nocopy/service/auth/CleanupTokenSessionsService.java b/src/main/java/ru/soune/nocopy/service/auth/CleanupTokenSessionsService.java index c18cda3..5ac5128 100644 --- a/src/main/java/ru/soune/nocopy/service/auth/CleanupTokenSessionsService.java +++ b/src/main/java/ru/soune/nocopy/service/auth/CleanupTokenSessionsService.java @@ -25,14 +25,13 @@ public class CleanupTokenSessionsService { @Transactional @Scheduled(fixedDelay = 30000) - public void cleanupExpiredFiles() { - LocalDateTime hourBefore = LocalDateTime.now().minusHours(authTokenLife); + public void cleanupExpiredTokens() { + LocalDateTime now = LocalDateTime.now(); - List tokensForDelete = authTokenRepository.findByLastUsedAtBefore(hourBefore).stream().toList(); - List tokensDeleteWithNullUpdate = authTokenRepository.findByLastUsedAtAndExpiresAtBefore( - null, hourBefore).stream().toList(); + List expiredTokens = authTokenRepository.findByExpiresAtBefore(now); - authTokenRepository.deleteAll(tokensForDelete); - authTokenRepository.deleteAll(tokensDeleteWithNullUpdate); + if (!expiredTokens.isEmpty()) { + authTokenRepository.deleteAll(expiredTokens); + } } }