From 6c3ae626e900055d30b278f65af2e3a6726bc782 Mon Sep 17 00:00:00 2001 From: Emii Tatsuo Date: Fri, 27 Nov 2020 18:01:49 -0500 Subject: [PATCH] Added ability to iterate through users in the database --- src/user_management/manager.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) 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