dialtone_axum 0.1.0

Dialtone Axum Back-end
Documentation
use axum::extract::Extension;
use axum::response::IntoResponse;
use axum::Json;

use dialtone_common::rest::users::user_exchanges::PutUserPassword;

use dialtone_sqlx::control::user::change_auth::change_user_auth;

use sqlx::{Pool, Postgres};

use crate::authz::authz_user::authz_acct_or_useradmin;
use crate::{ok_failure, ok_success};

use crate::response::response_error::ResponseError;
use crate::start_server::{Claims, SharedState};

pub async fn put_user_password_handler(
    claims: Claims,
    Json(request): Json<PutUserPassword>,
    Extension(pool): Extension<Pool<Postgres>>,
    Extension(state): Extension<SharedState>,
) -> Result<impl IntoResponse, ResponseError> {
    authz_acct_or_useradmin(&request.acct, &claims, &state).await?;
    let changed = change_user_auth(&pool, &request.acct, &request.password).await?;
    if changed {
        ok_success!()
    } else {
        ok_failure!()
    }
}