(
&self,
request: Request<api::DeleteTenantUserRequest>,
)
| 493 | } |
| 494 | |
| 495 | async fn delete_user( |
| 496 | &self, |
| 497 | request: Request<api::DeleteTenantUserRequest>, |
| 498 | ) -> Result<Response<()>, Status> { |
| 499 | let req = request.get_ref(); |
| 500 | let tenant_id = Uuid::from_str(&req.tenant_id).map_err(|e| e.status())?; |
| 501 | let user_id = Uuid::from_str(&req.user_id).map_err(|e| e.status())?; |
| 502 | |
| 503 | self.validator |
| 504 | .validate( |
| 505 | request.extensions(), |
| 506 | validator::ValidateTenantUserAccess::new( |
| 507 | validator::Flag::Delete, |
| 508 | tenant_id, |
| 509 | user_id, |
| 510 | ), |
| 511 | ) |
| 512 | .await?; |
| 513 | |
| 514 | let auth_id = request.extensions().get::<AuthID>().unwrap(); |
| 515 | if let AuthID::User(id) = auth_id |
| 516 | && id == &user_id |
| 517 | { |
| 518 | return Err(Status::invalid_argument( |
| 519 | "you can not delete yourself from the user", |
| 520 | )); |
| 521 | } |
| 522 | |
| 523 | tenant::delete_user(&tenant_id, &user_id) |
| 524 | .await |
| 525 | .map_err(|e| e.status())?; |
| 526 | |
| 527 | let mut resp = Response::new(()); |
| 528 | resp.metadata_mut() |
| 529 | .insert("x-log-tenant_id", req.tenant_id.parse().unwrap()); |
| 530 | resp.metadata_mut() |
| 531 | .insert("x-log-user_id", req.user_id.parse().unwrap()); |
| 532 | |
| 533 | Ok(resp) |
| 534 | } |
| 535 | |
| 536 | async fn list_users( |
| 537 | &self, |
nothing calls this directly
no test coverage detected