The endpoint is working
This commit is contained in:
@@ -236,10 +236,12 @@ pub async fn service_user_login(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
println!("Good to create");
|
||||||
let service_user =
|
let service_user =
|
||||||
match repo::service::get_with_username(&pool, &payload.username).await {
|
match repo::service::get_with_username(&pool, &payload.username).await {
|
||||||
Ok(service_user) => service_user,
|
Ok(service_user) => service_user,
|
||||||
Err(_err) => {
|
Err(err) => {
|
||||||
|
eprintln!("Error: {err:?}");
|
||||||
return (
|
return (
|
||||||
axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
axum::Json(response::LoginResponse {
|
axum::Json(response::LoginResponse {
|
||||||
@@ -249,12 +251,16 @@ pub async fn service_user_login(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
println!("Service user: {service_user:?}");
|
||||||
|
println!("Payload: {:?}", payload.passphrase);
|
||||||
let hashed_password = service_user.passphrase.clone();
|
let hashed_password = service_user.passphrase.clone();
|
||||||
|
println!("Hash password: {hashed_password:?}");
|
||||||
|
|
||||||
match hashing::verify_password(&payload.passphrase, hashed_password) {
|
match hashing::verify_password(&payload.passphrase, hashed_password) {
|
||||||
Ok(matches) => {
|
Ok(matches) => {
|
||||||
if matches {
|
if matches {
|
||||||
// Create token
|
// Create token
|
||||||
|
println!("Creating token");
|
||||||
let key = textsender_models::envy::environment::get_secret_key()
|
let key = textsender_models::envy::environment::get_secret_key()
|
||||||
.await
|
.await
|
||||||
.value;
|
.value;
|
||||||
@@ -288,6 +294,7 @@ pub async fn service_user_login(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
eprintln!("Invalid token");
|
||||||
(
|
(
|
||||||
axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
axum::Json(response::LoginResponse {
|
axum::Json(response::LoginResponse {
|
||||||
@@ -297,6 +304,7 @@ pub async fn service_user_login(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
eprintln!("No match");
|
||||||
(
|
(
|
||||||
axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
axum::http::StatusCode::INTERNAL_SERVER_ERROR,
|
||||||
axum::Json(response::LoginResponse {
|
axum::Json(response::LoginResponse {
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ pub async fn register_service_user(
|
|||||||
salt.id = repo::salt::insert(&pool, &salt).await.unwrap();
|
salt.id = repo::salt::insert(&pool, &salt).await.unwrap();
|
||||||
let mut service_user = textsender_models::user::ServiceUser {
|
let mut service_user = textsender_models::user::ServiceUser {
|
||||||
username: payload.username.clone(),
|
username: payload.username.clone(),
|
||||||
passphrase: hashing::hash_password(&payload.username, &generate_salt)
|
passphrase: hashing::hash_password(&payload.passphrase, &generate_salt)
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
salt_id: salt.id,
|
salt_id: salt.id,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
|
|||||||
+14
-3
@@ -54,17 +54,28 @@ pub async fn get_with_username(
|
|||||||
username: &String,
|
username: &String,
|
||||||
) -> Result<textsender_models::user::ServiceUser, sqlx::Error> {
|
) -> Result<textsender_models::user::ServiceUser, sqlx::Error> {
|
||||||
match sqlx::query(
|
match sqlx::query(
|
||||||
r#"SELECT id, username, passphrase, created, last_login FROM "service_user" WHERE username = $1"#
|
r#"SELECT id, username, passphrase, created, last_login, salt_id FROM "service_user" WHERE username = $1"#
|
||||||
).bind(username)
|
).bind(username)
|
||||||
.fetch_one(pool).await {
|
.fetch_one(pool).await {
|
||||||
Ok(row) => {
|
Ok(row) => {
|
||||||
|
let last_login: Option<time::OffsetDateTime> = match row.try_get("last_login") {
|
||||||
|
Ok(login) => {
|
||||||
|
Some(login)
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
eprintln!("Error: {err:?}");
|
||||||
|
None
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let service_user = textsender_models::user::ServiceUser {
|
let service_user = textsender_models::user::ServiceUser {
|
||||||
id: row.try_get("id")?,
|
id: row.try_get("id")?,
|
||||||
username: row.try_get("username")?,
|
username: row.try_get("username")?,
|
||||||
passphrase: row.try_get("passphrase")?,
|
passphrase: row.try_get("passphrase")?,
|
||||||
created: row.try_get("created")?,
|
created: row.try_get("created")?,
|
||||||
last_login: row.try_get("last_login")?,
|
// last_login:
|
||||||
salt_id: row.try_get("salt_id")?
|
salt_id: row.try_get("salt_id")?,
|
||||||
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(service_user)
|
Ok(service_user)
|
||||||
|
|||||||
Reference in New Issue
Block a user