From 65fbb80145bb003dd9ac2f390e1e01933aa9691d Mon Sep 17 00:00:00 2001 From: strawberry Date: Mon, 10 Jun 2024 21:14:18 -0400 Subject: [PATCH] adminroom: leave all rooms by default on manual deactivations Signed-off-by: strawberry --- src/admin/user/mod.rs | 22 ++++++++++++---------- src/admin/user/user_commands.rs | 10 ++++++---- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/admin/user/mod.rs b/src/admin/user/mod.rs index e715daf0..e11429de 100644 --- a/src/admin/user/mod.rs +++ b/src/admin/user/mod.rs @@ -26,11 +26,11 @@ pub(crate) enum UserCommand { /// - Deactivate a user /// - /// User will not be removed from all rooms by default. - /// Use --leave-rooms to force the user to leave all rooms + /// User will be removed from all rooms by default. + /// Use --no-leave-rooms to not leave all rooms by default. Deactivate { #[arg(short, long)] - leave_rooms: bool, + no_leave_rooms: bool, user_id: String, }, @@ -38,8 +38,10 @@ pub(crate) enum UserCommand { /// /// Recommended to use in conjunction with list-local-users. /// - /// Users will not be removed from joined rooms by default. - /// Can be overridden with --leave-rooms OR the --force flag. + /// Users will be removed from joined rooms by default. + /// + /// Can be overridden with --no-leave-rooms. + /// /// Removing a mass amount of users from a room may cause a significant /// amount of leave events. The time to leave rooms may depend significantly /// on joined rooms and servers. @@ -49,7 +51,7 @@ pub(crate) enum UserCommand { DeactivateAll { #[arg(short, long)] /// Remove users from their joined rooms - leave_rooms: bool, + no_leave_rooms: bool, #[arg(short, long)] /// Also deactivate admin accounts and will assume leave all rooms too force: bool, @@ -99,16 +101,16 @@ pub(crate) async fn process(command: UserCommand, body: Vec<&str>) -> Result create(body, username, password).await?, UserCommand::Deactivate { - leave_rooms, + no_leave_rooms, user_id, - } => deactivate(body, leave_rooms, user_id).await?, + } => deactivate(body, no_leave_rooms, user_id).await?, UserCommand::ResetPassword { username, } => reset_password(body, username).await?, UserCommand::DeactivateAll { - leave_rooms, + no_leave_rooms, force, - } => deactivate_all(body, leave_rooms, force).await?, + } => deactivate_all(body, no_leave_rooms, force).await?, UserCommand::ListJoinedRooms { user_id, } => list_joined_rooms(body, user_id).await?, diff --git a/src/admin/user/user_commands.rs b/src/admin/user/user_commands.rs index 9bd963dd..8b90894e 100644 --- a/src/admin/user/user_commands.rs +++ b/src/admin/user/user_commands.rs @@ -128,7 +128,7 @@ pub(crate) async fn create( } pub(crate) async fn deactivate( - _body: Vec<&str>, leave_rooms: bool, user_id: String, + _body: Vec<&str>, no_leave_rooms: bool, user_id: String, ) -> Result { // Validate user id let user_id = parse_local_user_id(&user_id)?; @@ -144,7 +144,7 @@ pub(crate) async fn deactivate( services().users.deactivate_account(&user_id)?; - if leave_rooms { + if !no_leave_rooms { services() .admin .send_message(RoomMessageEventContent::text_plain(format!( @@ -185,7 +185,9 @@ pub(crate) async fn reset_password(_body: Vec<&str>, username: String) -> Result } } -pub(crate) async fn deactivate_all(body: Vec<&str>, leave_rooms: bool, force: bool) -> Result { +pub(crate) async fn deactivate_all( + body: Vec<&str>, no_leave_rooms: bool, force: bool, +) -> Result { if body.len() < 2 || !body[0].trim().starts_with("```") || body.last().unwrap_or(&"").trim() != "```" { return Ok(RoomMessageEventContent::text_plain( "Expected code block in command body. Add --help for details.", @@ -245,7 +247,7 @@ pub(crate) async fn deactivate_all(body: Vec<&str>, leave_rooms: bool, force: bo match services().users.deactivate_account(&user_id) { Ok(()) => { deactivation_count = deactivation_count.saturating_add(1); - if leave_rooms || force { + if !no_leave_rooms { info!("Forcing user {user_id} to leave all rooms apart of deactivate-all"); leave_all_rooms(&user_id).await; }