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::PutUserSysData;

use dialtone_common::utils::parse_acct::parse_user_acct;
use sqlx::{Pool, Postgres};

use crate::authz::authz_sysrole::authz_useradmin;

use crate::{ok_failure, ok_success};

use dialtone_sqlx::db::user_principal::update_system_data::update_user_system_data;

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

pub async fn put_user_sysdata_handler(
    _: Claims,
    Json(request): Json<PutUserSysData>,
    Extension(pool): Extension<Pool<Postgres>>,
    Extension(state): Extension<SharedState>,
) -> Result<impl IntoResponse, ResponseError> {
    let user_host = parse_user_acct(&request.acct)?;
    authz_useradmin(&state, &user_host.host_name).await?;
    let changed = update_user_system_data(&pool, &request.acct, request.sysinfo).await?;
    match changed {
        None => ok_failure!(),
        Some(_) => ok_success!(),
    }
}