headless_lms_server/controllers/tmc_server/
users_by_upstream_id.rs1use std::env;
8
9use crate::{
10    domain::authorization::{
11        authorize_access_to_tmc_server, get_user_from_moocfi_by_tmc_access_token_and_upstream_id,
12    },
13    prelude::*,
14};
15use models::users::User;
16
17#[instrument(skip(pool))]
23pub async fn get_user_by_upstream_id(
24    upstream_id: web::Path<i32>,
25    pool: web::Data<PgPool>,
26    request: HttpRequest,
27) -> ControllerResult<web::Json<User>> {
28    let mut conn = pool.acquire().await?;
29    let token = authorize_access_to_tmc_server(&request).await?;
30    let tmc_access_token = env::var("TMC_ACCESS_TOKEN").expect("TMC_ACCESS_TOKEN must be defined");
31    let user = get_user_from_moocfi_by_tmc_access_token_and_upstream_id(
32        &mut conn,
33        &tmc_access_token,
34        &upstream_id,
35    )
36    .await?;
37
38    token.authorized_ok(web::Json(user))
39}
40
41pub fn _add_routes(cfg: &mut ServiceConfig) {
42    cfg.route("/{user_id}", web::get().to(get_user_by_upstream_id));
43}