| 114 | } |
| 115 | |
| 116 | async fn update( |
| 117 | &self, |
| 118 | request: Request<api::UpdateUserRequest>, |
| 119 | ) -> Result<Response<()>, Status> { |
| 120 | let req_user = match &request.get_ref().user { |
| 121 | Some(v) => v, |
| 122 | None => { |
| 123 | return Err(Status::invalid_argument("user is missing")); |
| 124 | } |
| 125 | }; |
| 126 | let user_id = Uuid::from_str(&req_user.id).map_err(|e| e.status())?; |
| 127 | |
| 128 | self.validator |
| 129 | .validate( |
| 130 | request.extensions(), |
| 131 | validator::ValidateUserAccess::new(validator::Flag::Update, user_id), |
| 132 | ) |
| 133 | .await?; |
| 134 | |
| 135 | // update |
| 136 | let _ = user::update(user::User { |
| 137 | id: user_id.into(), |
| 138 | is_admin: req_user.is_admin, |
| 139 | is_active: req_user.is_active, |
| 140 | email: req_user.email.clone(), |
| 141 | email_verified: true, |
| 142 | note: req_user.note.clone(), |
| 143 | ..Default::default() |
| 144 | }) |
| 145 | .await |
| 146 | .map_err(|e| e.status())?; |
| 147 | |
| 148 | let mut resp = Response::new(()); |
| 149 | resp.metadata_mut() |
| 150 | .insert("x-log-user_id", req_user.id.parse().unwrap()); |
| 151 | |
| 152 | Ok(resp) |
| 153 | } |
| 154 | |
| 155 | async fn delete( |
| 156 | &self, |