summaryrefslogtreecommitdiff
path: root/src/utils.rs
blob: 6a854d54482a8ff0108dc42ec2b111a3eccc2519 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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(());
        }
    }
}