feat: got sqlx working
This commit is contained in:
@@ -1 +0,0 @@
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
use sqlx::{sqlite::SqlitePool, Database};
|
||||
use pbkdf2::{pbkdf2_hmac_array, password_hash::{rand_core::OsRng, SaltString}};
|
||||
use sha2::Sha256;
|
||||
|
||||
const PASSWORD_ITERATIONS: u32 = 100_000;
|
||||
|
||||
pub async fn reset_password<'a, E>(pool: E, id: i16, password: String) -> anyhow::Result<()>
|
||||
where
|
||||
E: sqlx::Executor<'a, Database = sqlx::Sqlite>
|
||||
{
|
||||
let salt = SaltString::generate(&mut OsRng);
|
||||
|
||||
let key = pbkdf2_hmac_array::<Sha256, 20>(
|
||||
password.as_bytes(),
|
||||
salt.as_str().as_bytes(),
|
||||
PASSWORD_ITERATIONS
|
||||
);
|
||||
|
||||
let salt_string = hex::encode(salt.as_str().as_bytes());
|
||||
let password_string = hex::encode(&key[..]);
|
||||
|
||||
tracing::debug!("New password hash: {password_string}");
|
||||
tracing::debug!("New password salt: {salt_string}");
|
||||
|
||||
sqlx::query!(
|
||||
"UPDATE users SET password_hash = ?, password_salt = ? WHERE user_id = ?",
|
||||
password_string,
|
||||
salt_string,
|
||||
id
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
Reference in New Issue
Block a user