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

Method add_user

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

Source from the content-addressed store, hash-verified

299 }
300
301 async fn add_user(
302 &self,
303 request: Request<api::AddTenantUserRequest>,
304 ) -> Result<Response<()>, Status> {
305 let req_user = match &request.get_ref().tenant_user {
306 Some(v) => v,
307 None => {
308 return Err(Status::invalid_argument("tenant_user is missing"));
309 }
310 };
311 let tenant_id = Uuid::from_str(&req_user.tenant_id).map_err(|e| e.status())?;
312 let user_id = user::get_by_email(&req_user.email)
313 .await
314 .map_err(|e| e.status())?
315 .id;
316
317 self.validator
318 .validate(
319 request.extensions(),
320 validator::ValidateTenantUsersAccess::new(validator::Flag::Create, tenant_id),
321 )
322 .await?;
323
324 let tu = tenant::TenantUser {
325 user_id,
326 tenant_id: tenant_id.into(),
327 is_admin: req_user.is_admin,
328 is_device_admin: req_user.is_device_admin,
329 is_gateway_admin: req_user.is_gateway_admin,
330 ..Default::default()
331 };
332
333 let dps: Vec<tenant::TenantUserDeviceProfile> = req_user
334 .device_profiles
335 .iter()
336 .map(|dp| tenant::TenantUserDeviceProfile {
337 user_id,
338 device_profile_id: Uuid::from_str(&dp.device_profile_id)
339 .unwrap_or_default()
340 .into(),
341 ..Default::default()
342 })
343 .collect();
344
345 let apps: Vec<tenant::TenantUserApplication> = req_user
346 .applications
347 .iter()
348 .map(|app| tenant::TenantUserApplication {
349 user_id,
350 application_id: Uuid::from_str(&app.application_id)
351 .unwrap_or_default()
352 .into(),
353 is_read_only: app.is_read_only,
354 ..Default::default()
355 })
356 .collect();
357
358 let _ = tenant::add_user(tu, &dps, &apps)

Callers

nothing calls this directly

Calls 9

get_by_emailFunction · 0.85
add_userFunction · 0.85
statusMethod · 0.80
iterMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
to_stringMethod · 0.80
validateMethod · 0.45
intoMethod · 0.45

Tested by

no test coverage detected