Add method to mark token refreshed
This commit is contained in:
parent
915dbe9301
commit
dcc35b3b10
|
|
@ -6,5 +6,6 @@ import java.time.ZonedDateTime
|
|||
data class RefreshToken(
|
||||
val value: String,
|
||||
val expiresAt: ZonedDateTime,
|
||||
val refreshedAt: ZonedDateTime?,
|
||||
val user: User,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ class RefreshTokenEntity : AuditableUuidIdEntity() {
|
|||
|
||||
lateinit var expiresAt: ZonedDateTime
|
||||
|
||||
var refreshedAt: ZonedDateTime? = null
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "user_id")
|
||||
lateinit var user: UserEntity
|
||||
|
|
@ -43,7 +45,7 @@ class RefreshTokenEntity : AuditableUuidIdEntity() {
|
|||
lateinit var scopes: Set<ScopeEntity>
|
||||
|
||||
fun validate(): RefreshTokenEntity = this.apply {
|
||||
if (expiresAt.isExpired()) {
|
||||
if (expiresAt.isExpired() || refreshedAt != null) {
|
||||
throw RefreshTokenExpiredException(value)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,5 +7,6 @@ interface RefreshTokenCoreService {
|
|||
|
||||
fun get(value: String): RefreshToken
|
||||
fun create(token: NewRefreshToken): RefreshToken
|
||||
fun setRefreshed(value: String): RefreshToken
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,18 @@ class RefreshTokenCoreServiceImpl(
|
|||
.toDto()
|
||||
}
|
||||
|
||||
@Transactional
|
||||
override fun setRefreshed(value: String): RefreshToken {
|
||||
val refreshToken = refreshTokenRepository.findByValueOrThrow(value)
|
||||
.validate()
|
||||
.apply {
|
||||
refreshedAt = ZonedDateTime.now()
|
||||
}
|
||||
|
||||
return refreshTokenRepository.save(refreshToken)
|
||||
.toDto()
|
||||
}
|
||||
|
||||
private fun getExpirationDate(): ZonedDateTime {
|
||||
return ZonedDateTime.now().plus(refreshTokenProperties.timeToLive)
|
||||
}
|
||||
|
|
@ -69,6 +81,7 @@ class RefreshTokenCoreServiceImpl(
|
|||
return RefreshToken(
|
||||
value = value,
|
||||
expiresAt = expiresAt,
|
||||
refreshedAt = refreshedAt,
|
||||
user = user.toDto(device)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
databaseChangeLog:
|
||||
- changeSet:
|
||||
id: 202107021246__alter_table__refresh_tokens
|
||||
author: touchin
|
||||
preConditions:
|
||||
- onFail: MARK_RAN
|
||||
tableExists:
|
||||
tableName: refresh_tokens
|
||||
changes:
|
||||
- addColumn:
|
||||
tableName: refresh_tokens
|
||||
columns:
|
||||
- column:
|
||||
name: refreshed_at
|
||||
type: TIMESTAMP WITH TIME ZONE
|
||||
Loading…
Reference in New Issue