summaryrefslogtreecommitdiff
path: root/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/utils.rs b/src/utils.rs
new file mode 100644
index 0000000..6a854d5
--- /dev/null
+++ b/src/utils.rs
@@ -0,0 +1,23 @@
+use crate::{database::Database, routes::auth::hash_password};
+
+pub fn register_admin(database: &Database, email: &str, username: &str, password: &str) -> Result<(), ()> {
+ match database.fetch_user_by_email(email) {
+ Err(_) | Ok(Some(_)) => return Err(()),
+ Ok(None) => {},
+ };
+
+ match database.fetch_user_by_username(username) {
+ Err(_) | Ok(Some(_)) => return Err(()),
+ Ok(None) => {},
+ };
+
+ let Ok(password_hash) = hash_password(password) else { return Err(()) };
+
+ match database.insert_user(email, username, &password_hash, true) {
+ Ok(_) => Ok(()),
+ Err(e) => {
+ eprintln!("{:?}", e);
+ return Err(());
+ }
+ }
+}