diff --git a/src/user_management/manager.rs b/src/user_management/manager.rs index 4dd639a..4bdabd9 100644 --- a/src/user_management/manager.rs +++ b/src/user_management/manager.rs @@ -83,6 +83,29 @@ impl UserManager { } } + /// Produce a list of all users in the database + /// + /// # Panics + /// An panics if there is an error reading from the database or if data recieved from + /// the database is corrupt + pub fn all_users( + &self, + ) -> Vec> + where + UserData: Serialize + DeserializeOwned + { + self.users.iter() + .map(|result| { + let (username, bytes) = result.expect("Failed to connect to database"); + let inner: PartialUser = bincode::deserialize_from(bytes.as_ref()) + .expect("Received malformed data from database"); + let username = String::from_utf8(username.to_vec()) + .expect("Malformed username in database"); + RegisteredUser::new(username, None, self.clone(), inner) + }) + .collect() + } + /// Attempt to determine the user who sent a request based on the certificate. /// /// # Errors