diff --git a/src/lib.rs b/src/lib.rs index 3f8e1fd..e51e517 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,35 +1,6 @@ #[macro_use] extern crate justerror; -use argon2::{ - password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString}, - Argon2, -}; -use uuid::Uuid; - pub mod db; pub mod handlers; - -fn create_user(username: &str, password: &[u8]) -> Result { - // Argon2 with default params (Argon2id v19) - let argon2 = Argon2::default(); - - let salt = SaltString::generate(&mut OsRng); - let password_hash = argon2 - .hash_password(password, &salt) - .unwrap() // safe to unwrap, we know the salt is valid - .to_string(); - - todo!() -} - -#[Error(desc = "Could not create user.")] -#[non_exhaustive] -pub struct CreateUserError(#[from] CreateUserErrorKind); - -#[Error] -#[non_exhaustive] -pub enum CreateUserErrorKind { - AlreadyExists, - Unknown, -} +pub mod users; diff --git a/src/users.rs b/src/users.rs new file mode 100644 index 0000000..5dbd329 --- /dev/null +++ b/src/users.rs @@ -0,0 +1,31 @@ +use argon2::{ + password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString}, + Argon2, +}; +use uuid::Uuid; + +fn create_user(username: &str, password: &[u8]) -> Result { + // Argon2 with default params (Argon2id v19) + let argon2 = Argon2::default(); + + let salt = SaltString::generate(&mut OsRng); + let password_hash = argon2 + .hash_password(password, &salt) + .unwrap() // safe to unwrap, we know the salt is valid + .to_string(); + + todo!() +} + +#[Error(desc = "Could not create user.")] +#[non_exhaustive] +pub struct CreateUserError(#[from] CreateUserErrorKind); + +#[Error] +#[non_exhaustive] +pub enum CreateUserErrorKind { + AlreadyExists, + PasswordMismatch, + MissingFields, + Unknown, +}