diff --git a/src/admin/user/commands.rs b/src/admin/user/commands.rs index b88410984..9c06c3691 100644 --- a/src/admin/user/commands.rs +++ b/src/admin/user/commands.rs @@ -461,127 +461,6 @@ impl crate::Context<'_> { .await } - pub(super) async fn force_join_list_of_local_users( - &self, - room_id: OwnedRoomOrAliasId, - yes_i_want_to_do_this: bool, - ) -> Result { - if self.body.len() < 2 - || !self.body[0].trim().starts_with("```") - || self.body.last().unwrap_or(&"").trim() != "```" - { - return Err!("Expected code block in command body. Add --help for details.",); - } - - if !yes_i_want_to_do_this { - return Err!( - "You must pass the --yes-i-want-to-do-this-flag to ensure you really want to \ - force bulk join all specified local users.", - ); - } - - let server_admins = self.services.admin.get_admins().await; - - if server_admins.is_empty() { - return Err!("There are no admins set for this server."); - } - - let (room_id, servers) = self - .services - .rooms - .alias - .resolve_with_servers(&room_id, None) - .await?; - - if !self - .services - .rooms - .state_cache - .server_in_room(self.services.globals.server_name(), &room_id) - .await - { - return Err!("We are not joined in this room."); - } - - if !self - .services - .rooms - .state_cache - .room_members(&room_id) - .ready_any(|user_id| server_admins.contains(&user_id)) - .await - { - return Err!("There is not a single server admin in the room.",); - } - - let usernames = self - .body - .to_vec() - .drain(1..self.body.len().saturating_sub(1)) - .collect::>(); - - let mut user_ids: Vec = Vec::with_capacity(usernames.len()); - - for username in usernames { - match parse_active_local_user_id(self.services, username).await { - | Ok(user_id) => { - // don't make the server service account join - if user_id == self.services.globals.server_user { - self.services - .admin - .send_text(&format!( - "{username} is the server service account, skipping over" - )) - .await; - - continue; - } - - user_ids.push(user_id); - }, - | Err(e) => { - self.services - .admin - .send_text(&format!( - "{username} is not a valid username, skipping over: {e}" - )) - .await; - - continue; - }, - } - } - - let mut failed_joins: usize = 0; - let mut successful_joins: usize = 0; - - for user_id in user_ids { - match self - .services - .rooms - .membership - .join_room(&user_id, &room_id, Some(String::from(BULK_JOIN_REASON)), &servers) - .await - { - | Ok(_res) => { - successful_joins = successful_joins.saturating_add(1); - }, - | Err(e) => { - debug_warn!( - "Failed force joining {user_id} to {room_id} during bulk join: {e}" - ); - failed_joins = failed_joins.saturating_add(1); - }, - } - } - - self.write_str(&format!( - "{successful_joins} local users have been joined to {room_id}. {failed_joins} joins \ - failed.", - )) - .await - } - pub(super) async fn force_demote( &self, user_id: String, diff --git a/src/admin/user/mod.rs b/src/admin/user/mod.rs index fe9c89ee8..a8f23e633 100644 --- a/src/admin/user/mod.rs +++ b/src/admin/user/mod.rs @@ -239,21 +239,6 @@ pub enum UserCommand { event_id: OwnedEventId, }, - /// Force joins a specified list of local users to join the specified - /// room. - /// - /// Specify a codeblock of usernames. - /// - /// At least 1 server admin must be in the room to reduce abuse. - /// - /// Requires the `--yes-i-want-to-do-this` flag. - ForceJoinListOfLocalUsers { - room_id: OwnedRoomOrAliasId, - - #[arg(long)] - yes_i_want_to_do_this: bool, - }, - /// Resets the push-rules (notification settings) of the target user to the /// server defaults. ResetPushRules {