diff --git a/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreService.kt b/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreService.kt index a1b15bc..fb17f8c 100644 --- a/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreService.kt +++ b/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreService.kt @@ -7,6 +7,6 @@ interface RefreshTokenCoreService { fun get(value: String): RefreshToken fun create(token: NewRefreshToken): RefreshToken - fun setUsed(value: String): RefreshToken + fun refresh(value: String): RefreshToken } diff --git a/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreServiceImpl.kt b/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreServiceImpl.kt index b5f572a..3c54c2f 100644 --- a/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreServiceImpl.kt +++ b/auth-jwt-core/src/main/kotlin/ru/touchin/auth/core/tokens/refresh/services/RefreshTokenCoreServiceImpl.kt @@ -7,8 +7,6 @@ import ru.touchin.auth.core.device.converters.DeviceConverter.toDto import ru.touchin.auth.core.device.repository.DeviceRepository import ru.touchin.auth.core.scope.dto.Scope import ru.touchin.auth.core.scope.repositories.ScopeRepository -import ru.touchin.auth.core.user.repositories.UserRepository -import ru.touchin.auth.core.user.repositories.findByIdOrThrow import ru.touchin.auth.core.tokens.refresh.dto.RefreshToken import ru.touchin.auth.core.tokens.refresh.models.RefreshTokenEntity import ru.touchin.auth.core.tokens.refresh.properties.RefreshTokenProperties @@ -16,6 +14,8 @@ import ru.touchin.auth.core.tokens.refresh.repositories.RefreshTokenRepository import ru.touchin.auth.core.tokens.refresh.repositories.findByValueOrThrow import ru.touchin.auth.core.tokens.refresh.services.dto.NewRefreshToken import ru.touchin.auth.core.user.converters.UserConverter.toDto +import ru.touchin.auth.core.user.repositories.UserRepository +import ru.touchin.auth.core.user.repositories.findByIdOrThrow import ru.touchin.common.random.SecureRandomStringGenerator import java.time.ZonedDateTime @@ -53,14 +53,24 @@ class RefreshTokenCoreServiceImpl( } @Transactional - override fun setUsed(value: String): RefreshToken { - val refreshToken = refreshTokenRepository.findByValueOrThrow(value) + override fun refresh(value: String): RefreshToken { + val oldToken = refreshTokenRepository.findByValueOrThrow(value) .validate() .apply { usedAt = ZonedDateTime.now() } - return refreshTokenRepository.save(refreshToken) + refreshTokenRepository.save(oldToken) + + val model = RefreshTokenEntity().apply { + this.value = generateTokenValue() + expiresAt = getExpirationDate() + user = oldToken.user + device = oldToken.device + scopes = oldToken.scopes.toSet() + } + + return refreshTokenRepository.save(model) .toDto() } @@ -75,6 +85,7 @@ class RefreshTokenCoreServiceImpl( } companion object { + fun RefreshTokenEntity.toDto(): RefreshToken { val device = device?.toDto()