Skip to content

Commit

Permalink
adminroom: leave all rooms by default on manual deactivations
Browse files Browse the repository at this point in the history
Signed-off-by: strawberry <[email protected]>
  • Loading branch information
girlbossceo committed Jun 11, 2024
1 parent f1d90e5 commit 65fbb80
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
22 changes: 12 additions & 10 deletions src/admin/user/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,22 @@ 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,
},

/// - Deactivate a list of users
///
/// 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.
Expand All @@ -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,
Expand Down Expand Up @@ -99,16 +101,16 @@ pub(crate) async fn process(command: UserCommand, body: Vec<&str>) -> Result<Roo
password,
} => 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?,
Expand Down
10 changes: 6 additions & 4 deletions src/admin/user/user_commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<RoomMessageEventContent> {
// Validate user id
let user_id = parse_local_user_id(&user_id)?;
Expand All @@ -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!(
Expand Down Expand Up @@ -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<RoomMessageEventContent> {
pub(crate) async fn deactivate_all(
body: Vec<&str>, no_leave_rooms: bool, force: bool,
) -> Result<RoomMessageEventContent> {
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.",
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 65fbb80

Please sign in to comment.