delete user session on event
- update handleRemoteAccountEvent to handle enabled event in AccountListener - update RedisSessionService - add deleteUser - add delete
This commit is contained in:
@@ -17,8 +17,15 @@ class AccountListener(
|
|||||||
@KafkaListener(topics = ["account"])
|
@KafkaListener(topics = ["account"])
|
||||||
fun handleRemoteAccountEvent(record: ConsumerRecord<String, AccountMessage>) {
|
fun handleRemoteAccountEvent(record: ConsumerRecord<String, AccountMessage>) {
|
||||||
log.trace { "Received event: ${record.key()} for user: ${record.value().userId}" }
|
log.trace { "Received event: ${record.key()} for user: ${record.value().userId}" }
|
||||||
if (record.key() == "change" && record.value().change.any { it in setOf("enabled", "username", "roles") }) {
|
if (record.key() == "change") {
|
||||||
sessionService.updateUser(record.value().userId).subscribe()
|
when {
|
||||||
|
record.value().change.any { it == "enabled" } -> {
|
||||||
|
sessionService.deleteUser(record.value().userId).subscribe()
|
||||||
|
}
|
||||||
|
record.value().change.any { it in setOf("username", "roles") } -> {
|
||||||
|
sessionService.updateUser(record.value().userId).subscribe()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ class RedisSessionService(
|
|||||||
private val accountRegistryService: AccountRegistryService,
|
private val accountRegistryService: AccountRegistryService,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
fun deleteUser(user: UUID): Flux<RedisSession> = findByUser(user)
|
||||||
|
.flatMapMany { sessions -> Flux.fromIterable(sessions.values) }
|
||||||
|
.flatMap(::delete)
|
||||||
|
|
||||||
fun updateUser(
|
fun updateUser(
|
||||||
user: UUID,
|
user: UUID,
|
||||||
): Flux<RedisSession> = findByUser(user)
|
): Flux<RedisSession> = findByUser(user)
|
||||||
@@ -45,4 +49,10 @@ class RedisSessionService(
|
|||||||
): Mono<RedisSession> = redisSessionRepository.save(session)
|
): Mono<RedisSession> = redisSessionRepository.save(session)
|
||||||
.thenReturn(session)
|
.thenReturn(session)
|
||||||
.doOnNext { ltd.hlaeja.listener.log.trace { "Save session: ${it.id}" } }
|
.doOnNext { ltd.hlaeja.listener.log.trace { "Save session: ${it.id}" } }
|
||||||
|
|
||||||
|
private fun delete(
|
||||||
|
session: RedisSession,
|
||||||
|
): Mono<RedisSession> = redisSessionRepository.deleteById(session.id)
|
||||||
|
.thenReturn(session)
|
||||||
|
.doOnNext { ltd.hlaeja.listener.log.trace { "Deleted session: ${it.id}" } }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user