User Auth / iota auth
This commit is contained in:
parent
67fa97b8e8
commit
6053d4fbde
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::username).and_then(|v| v.as_str()),
|
||||||
cv.get_data(DataTypes::public_key).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::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(
|
match sql::register_complete_user(
|
||||||
user_id,
|
user_id,
|
||||||
username.to_string(),
|
username.to_string(),
|
||||||
public_key.to_string(),
|
public_key.to_string(),
|
||||||
"".to_string(), // private_key_hash
|
|
||||||
iota_id,
|
iota_id,
|
||||||
reset_token.to_string(),
|
reset_token.to_string(),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -445,22 +445,22 @@ pub async fn register_complete_user(
|
||||||
id: i64,
|
id: i64,
|
||||||
username: String,
|
username: String,
|
||||||
public_key: String,
|
public_key: String,
|
||||||
private_key_hash: String,
|
|
||||||
iota_id: i64,
|
iota_id: i64,
|
||||||
token: String,
|
token: String,
|
||||||
) -> Result<(), sqlx::Error> {
|
) -> Result<(), sqlx::Error> {
|
||||||
let db_lock = SQL_DB.read().await;
|
let db_lock = SQL_DB.read().await;
|
||||||
let pool = db_lock.as_ref().expect("Database pool is not initialized");
|
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 (?, ?, ?, ?, ?, ?)")
|
sqlx::query(
|
||||||
.bind(id)
|
"INSERT INTO users (id, username, public_key, iota_id, token) VALUES (?, ?, ?, ?, ?)",
|
||||||
.bind(username)
|
)
|
||||||
.bind(public_key)
|
.bind(id)
|
||||||
.bind(private_key_hash)
|
.bind(username)
|
||||||
.bind(iota_id)
|
.bind(public_key)
|
||||||
.bind(token)
|
.bind(iota_id)
|
||||||
.execute(pool)
|
.bind(token)
|
||||||
.await?;
|
.execute(pool)
|
||||||
|
.await?;
|
||||||
|
|
||||||
Ok(())
|
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 db_lock = SQL_DB.read().await;
|
||||||
let pool = db_lock.as_ref().expect("Database pool is not initialized");
|
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)",
|
"SELECT id, public_key FROM iotas WHERE id = CAST(? AS UNSIGNED)",
|
||||||
)
|
)
|
||||||
.bind(id)
|
.bind(id)
|
||||||
.fetch_optional(pool)
|
.fetch_optional(pool)
|
||||||
.await?
|
.await;
|
||||||
.map(|(id, public_key)| (id, String::from_utf8_lossy(&public_key).to_string()))
|
|
||||||
.ok_or_else(|| sqlx::Error::RowNotFound)
|
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> {
|
pub async fn change_iota_key(id: i64, new_key: String) -> Result<(), sqlx::Error> {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue