User Auth / iota auth
This commit is contained in:
parent
0d28d225c6
commit
2bcf6e07e6
2 changed files with 24 additions and 17 deletions
|
|
@ -651,14 +651,12 @@ impl OmikronConnection {
|
|||
cv.get_data(DataTypes::username).and_then(|v| v.as_str()),
|
||||
cv.get_data(DataTypes::public_key).and_then(|v| v.as_str()),
|
||||
cv.get_data(DataTypes::iota_id).and_then(|v| v.as_i64()),
|
||||
cv.get_data(DataTypes::reset_token).and_then(|v| v.as_str()), // Assuming reset_token is sent as token
|
||||
cv.get_data(DataTypes::reset_token).and_then(|v| v.as_str()),
|
||||
) {
|
||||
// The documentation does not specify a private_key_hash, using an empty string.
|
||||
match sql::register_complete_user(
|
||||
user_id,
|
||||
username.to_string(),
|
||||
public_key.to_string(),
|
||||
"".to_string(), // private_key_hash
|
||||
iota_id,
|
||||
reset_token.to_string(),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -445,22 +445,22 @@ pub async fn register_complete_user(
|
|||
id: i64,
|
||||
username: String,
|
||||
public_key: String,
|
||||
private_key_hash: String,
|
||||
iota_id: i64,
|
||||
token: String,
|
||||
) -> Result<(), sqlx::Error> {
|
||||
let db_lock = SQL_DB.read().await;
|
||||
let pool = db_lock.as_ref().expect("Database pool is not initialized");
|
||||
|
||||
sqlx::query("INSERT INTO users (id, username, public_key, private_key_hash, iota_id, token) VALUES (?, ?, ?, ?, ?, ?)")
|
||||
.bind(id)
|
||||
.bind(username)
|
||||
.bind(public_key)
|
||||
.bind(private_key_hash)
|
||||
.bind(iota_id)
|
||||
.bind(token)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
sqlx::query(
|
||||
"INSERT INTO users (id, username, public_key, iota_id, token) VALUES (?, ?, ?, ?, ?)",
|
||||
)
|
||||
.bind(id)
|
||||
.bind(username)
|
||||
.bind(public_key)
|
||||
.bind(iota_id)
|
||||
.bind(token)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -541,14 +541,23 @@ pub async fn get_iota_by_id(id: i64) -> Result<(i64, String), sqlx::Error> {
|
|||
let db_lock = SQL_DB.read().await;
|
||||
let pool = db_lock.as_ref().expect("Database pool is not initialized");
|
||||
|
||||
sqlx::query_as::<_, (i64, Vec<u8>)>(
|
||||
let result = sqlx::query_as::<_, (u64, Vec<u8>)>(
|
||||
"SELECT id, public_key FROM iotas WHERE id = CAST(? AS UNSIGNED)",
|
||||
)
|
||||
.bind(id)
|
||||
.fetch_optional(pool)
|
||||
.await?
|
||||
.map(|(id, public_key)| (id, String::from_utf8_lossy(&public_key).to_string()))
|
||||
.ok_or_else(|| sqlx::Error::RowNotFound)
|
||||
.await;
|
||||
|
||||
match result {
|
||||
Ok(optional_row) => match optional_row {
|
||||
Some((id_u64, public_key)) => Ok((
|
||||
id_u64 as i64,
|
||||
String::from_utf8_lossy(&public_key).to_string(),
|
||||
)),
|
||||
None => Err(sqlx::Error::RowNotFound),
|
||||
},
|
||||
Err(e) => Err(e),
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn change_iota_key(id: i64, new_key: String) -> Result<(), sqlx::Error> {
|
||||
|
|
|
|||
Loading…
Reference in a new issue