2025-11-21 22:27:04 +01:00

47 lines
1.1 KiB
Rust

use argon2::password_hash::SaltString;
use argon2::PasswordHasher;
use argon2::password_hash::rand_core::OsRng;
use log::{error, info};
use rusqlite::{Connection, params};
const CREATE_USER: &str = "
INSERT INTO users (name, pass) VALUES (?1, ?2)
";
const SELECT_USER: &str ="
SELECT * FROM users WHERE name = ?1
";
struct User {
id: u64,
name: String,
pass: String
}
pub fn create(connection: &Connection, name: &str, pass: &str) -> Result<(), ()> {
let argon2 = argon2::Argon2::default();
let salt = SaltString::generate(&mut OsRng);
let pass = match argon2.hash_password(pass.as_bytes(), &salt) {
Ok(pass) => pass.to_string(),
Err(e) => {
error!("{e:?}");
return Err(());
},
};
info!("Hashed password for user {}", name);
match connection.execute(CREATE_USER, params![name, pass]) {
Ok(_) => return Ok(()),
Err(e) => {
error!("{e:?}");
return Err(())
},
}
}
pub fn verify(connection: &Connection, name: &str, pass: &str) {
// match connection.query_one(SELECT_USER, params![name], |row| {})) {
// }
}