Merge pull request #32 from TouchInstinct/fix/refresh-method

Rewrite refresh token method
This commit is contained in:
Mikhail Yasnov 2021-07-02 16:43:08 +03:00 committed by GitHub
commit 2d75a4a991
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 6 deletions

View File

@ -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
}

View File

@ -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()