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

Method create

chirpstack/src/api/user.rs:26–81  ·  view source on GitHub ↗
(
        &self,
        request: Request<api::CreateUserRequest>,
    )

Source from the content-addressed store, hash-verified

24#[tonic::async_trait]
25impl UserService for User {
26 async fn create(
27 &self,
28 request: Request<api::CreateUserRequest>,
29 ) -> Result<Response<api::CreateUserResponse>, Status> {
30 self.validator
31 .validate(
32 request.extensions(),
33 validator::ValidateUsersAccess::new(validator::Flag::Create),
34 )
35 .await?;
36
37 let req = request.get_ref();
38 let req_user = match &req.user {
39 Some(v) => v,
40 None => {
41 return Err(Status::invalid_argument("user is missing"));
42 }
43 };
44
45 let mut u = user::User {
46 is_admin: req_user.is_admin,
47 is_active: req_user.is_active,
48 email: req_user.email.clone(),
49 note: req_user.note.clone(),
50 ..Default::default()
51 };
52
53 u.set_password_hash(&req.password).map_err(|e| e.status())?;
54
55 u = user::create(u).await.map_err(|e| e.status())?;
56
57 for tu in &req.tenants {
58 let tenant_id = Uuid::from_str(&tu.tenant_id).map_err(|e| e.status())?;
59
60 let t = tenant::TenantUser {
61 tenant_id: tenant_id.into(),
62 user_id: u.id,
63 is_admin: tu.is_admin,
64 is_device_admin: tu.is_device_admin,
65 is_gateway_admin: tu.is_gateway_admin,
66 ..Default::default()
67 };
68
69 tenant::add_user(t, &[], &[])
70 .await
71 .map_err(|e| e.status())?;
72 }
73
74 let mut resp = Response::new(api::CreateUserResponse {
75 id: u.id.to_string(),
76 });
77 resp.metadata_mut()
78 .insert("x-log-user_id", u.id.to_string().parse().unwrap());
79
80 Ok(resp)
81 }
82
83 async fn get(

Callers 15

newMethod · 0.45
test_kafkaFunction · 0.45
test_userFunction · 0.45
UserStoreClass · 0.45
ApplicationStoreClass · 0.45
TenantStoreClass · 0.45
DeviceProfileStoreClass · 0.45
GatewayStoreClass · 0.45
DeviceStoreClass · 0.45
MulticastGroupStoreClass · 0.45
onFinishFunction · 0.45
onFinishFunction · 0.45

Calls 9

add_userFunction · 0.85
set_password_hashMethod · 0.80
statusMethod · 0.80
to_stringMethod · 0.80
insertMethod · 0.80
unwrapMethod · 0.80
createFunction · 0.50
validateMethod · 0.45
intoMethod · 0.45

Tested by 2

test_kafkaFunction · 0.36
test_userFunction · 0.36