feat: account deletion request and active-user check

This commit is contained in:
2026-10-26 02:11:44 +01:00
parent 83bb5d9847
commit 0b5d18c4ee
27 changed files with 577 additions and 151 deletions

View File

@@ -78,13 +78,18 @@ impl UserRepository for InMemoryStore {
events: &[crate::events::DomainEvent],
) -> Result<(), DomainError> {
let id = user_id.value();
if let Some(user) = self.users.read().unwrap().get(&id) {
self.retired_usernames
.write()
.unwrap()
.insert(user.username().value().to_lowercase());
self.tombstoned.write().unwrap().insert(id);
}
let users = self.users.read().unwrap();
let mut gone = self.tombstoned.write().unwrap();
let Some(user) = users.get(&id).filter(|_| !gone.contains(&id)) else {
return Err(DomainError::NotFound("User not found".into()));
};
self.retired_usernames
.write()
.unwrap()
.insert(user.username().value().to_lowercase());
gone.insert(id);
drop(gone);
drop(users);
self.refresh_sessions
.write()
.unwrap()