added check for token generation (look if exists) (better)

This commit is contained in:
2024-10-04 17:17:46 +02:00
parent cd1632b533
commit fb28221875

View File

@@ -581,13 +581,10 @@ async fn register(
.unwrap() .unwrap()
.to_string(); .to_string();
let mut token = Alphanumeric.sample_string(&mut OsRng, 256); let mut token = Alphanumeric.sample_string(&mut OsRng, 256);
while match sqlx::query!(r#"SELECT id FROM users WHERE token=?1"#, token) while let Ok(Some(_)) = sqlx::query!(r#"SELECT id FROM users WHERE token=?1"#, token)
.fetch_optional(&mut *conn) .fetch_optional(&mut *conn)
.await .await
{ {
Ok(Some(user)) => true,
_ => false,
} {
token = Alphanumeric.sample_string(&mut OsRng, 256); token = Alphanumeric.sample_string(&mut OsRng, 256);
} }
let result = sqlx::query!(r#"INSERT INTO users ( username, saltyhash, permissions, token) VALUES ( ?1, ?2, ?3, ?4 )"#, login.username, hash, 0, token).execute(&mut *conn).await; let result = sqlx::query!(r#"INSERT INTO users ( username, saltyhash, permissions, token) VALUES ( ?1, ?2, ?3, ?4 )"#, login.username, hash, 0, token).execute(&mut *conn).await;