MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / update_user

Method update_user

chirpstack/src/api/tenant.rs:424–493  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::UpdateTenantUserRequest>,
    )

Source from the content-addressed store, hash-verified

422 }
423
424 async fn update_user(
425 &self,
426 request: Request<api::UpdateTenantUserRequest>,
427 ) -> Result<Response<()>, Status> {
428 let req_user = match &request.get_ref().tenant_user {
429 Some(v) => v,
430 None => {
431 return Err(Status::invalid_argument("tenant_user is missing"));
432 }
433 };
434 let tenant_id = Uuid::from_str(&req_user.tenant_id).map_err(|e| e.status())?;
435 let user_id = Uuid::from_str(&req_user.user_id).map_err(|e| e.status())?;
436
437 self.validator
438 .validate(
439 request.extensions(),
440 validator::ValidateTenantUserAccess::new(
441 validator::Flag::Update,
442 tenant_id,
443 user_id,
444 ),
445 )
446 .await?;
447
448 let tu = tenant::TenantUser {
449 tenant_id: tenant_id.into(),
450 user_id: user_id.into(),
451 is_admin: req_user.is_admin,
452 is_device_admin: req_user.is_device_admin,
453 is_gateway_admin: req_user.is_gateway_admin,
454 ..Default::default()
455 };
456
457 let dps: Vec<tenant::TenantUserDeviceProfile> = req_user
458 .device_profiles
459 .iter()
460 .map(|dp| tenant::TenantUserDeviceProfile {
461 user_id: user_id.into(),
462 device_profile_id: Uuid::from_str(&dp.device_profile_id)
463 .unwrap_or_default()
464 .into(),
465 ..Default::default()
466 })
467 .collect();
468
469 let apps: Vec<tenant::TenantUserApplication> = req_user
470 .applications
471 .iter()
472 .map(|app| tenant::TenantUserApplication {
473 user_id: user_id.into(),
474 application_id: Uuid::from_str(&app.application_id)
475 .unwrap_or_default()
476 .into(),
477 is_read_only: app.is_read_only,
478 ..Default::default()
479 })
480 .collect();
481

Callers

nothing calls this directly

Calls 7

update_userFunction · 0.85
statusMethod · 0.80
iterMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
validateMethod · 0.45
intoMethod · 0.45

Tested by

no test coverage detected