Merge pull request #32 from TouchInstinct/fix/refresh-method
Rewrite refresh token method
This commit is contained in:
commit
2d75a4a991
|
|
@ -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
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue