feat: remove user from all shared vaults upon account deletion (#843)

This commit is contained in:
Karol Sójko
2023-09-22 10:49:53 +02:00
committed by GitHub
parent 6515dcf487
commit dc77ff3e45
14 changed files with 220 additions and 143 deletions
@@ -4,11 +4,13 @@ import { Logger } from 'winston'
import { ItemRepositoryResolverInterface } from '../Item/ItemRepositoryResolverInterface'
import { DeleteSharedVaults } from '../UseCase/SharedVaults/DeleteSharedVaults/DeleteSharedVaults'
import { RemoveUserFromSharedVaults } from '../UseCase/SharedVaults/RemoveUserFromSharedVaults/RemoveUserFromSharedVaults'
export class AccountDeletionRequestedEventHandler implements DomainEventHandlerInterface {
constructor(
private itemRepositoryResolver: ItemRepositoryResolverInterface,
private deleteSharedVaults: DeleteSharedVaults,
private removeUserFromSharedVaults: RemoveUserFromSharedVaults,
private logger: Logger,
) {}
@@ -23,13 +25,24 @@ export class AccountDeletionRequestedEventHandler implements DomainEventHandlerI
await itemRepository.deleteByUserUuid(event.payload.userUuid)
const result = await this.deleteSharedVaults.execute({
const deletingVaultsResult = await this.deleteSharedVaults.execute({
ownerUuid: event.payload.userUuid,
})
if (result.isFailed()) {
this.logger.error(`Failed to delete shared vaults for user: ${event.payload.userUuid}: ${result.getError()}`)
if (deletingVaultsResult.isFailed()) {
this.logger.error(
`Failed to delete shared vaults for user: ${event.payload.userUuid}: ${deletingVaultsResult.getError()}`,
)
}
return
const deletingUserFromOtherVaultsResult = await this.removeUserFromSharedVaults.execute({
userUuid: event.payload.userUuid,
})
if (deletingUserFromOtherVaultsResult.isFailed()) {
this.logger.error(
`Failed to remove user: ${
event.payload.userUuid
} from shared vaults: ${deletingUserFromOtherVaultsResult.getError()}`,
)
}
this.logger.info(`Finished account cleanup for user: ${event.payload.userUuid}`)