feat: account deletion request and active-user check
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user