32 lines
786 B
Rust
32 lines
786 B
Rust
|
use argon2::{
|
||
|
password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
|
||
|
Argon2,
|
||
|
};
|
||
|
use uuid::Uuid;
|
||
|
|
||
|
fn create_user(username: &str, password: &[u8]) -> Result<Uuid, CreateUserError> {
|
||
|
// 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,
|
||
|
}
|