diff options
Diffstat (limited to 'src/utils.rs')
| -rw-r--r-- | src/utils.rs | 23 |
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(()); + } + } +} |
