user_groups: Check can_join_group setting when user tries to join.

Fixes part of #25938.
This commit is contained in:
Sahil Batra
2024-09-19 19:56:14 +05:30
committed by Tim Abbott
parent 1033230b52
commit 6d0d1a0700
2 changed files with 116 additions and 3 deletions

View File

@@ -290,9 +290,22 @@ def add_members_to_group_backend(
user_group_id: int,
members: list[int],
) -> HttpResponse:
user_group = access_user_group_for_update(
user_group_id, user_profile, permission_setting="can_manage_group"
)
if len(members) == 1 and user_profile.id == members[0]:
try:
user_group = access_user_group_for_update(
user_group_id, user_profile, permission_setting="can_join_group"
)
except JsonableError:
# User can still join the group if user has permission to add
# anyone in the group.
user_group = access_user_group_for_update(
user_group_id, user_profile, permission_setting="can_manage_group"
)
else:
user_group = access_user_group_for_update(
user_group_id, user_profile, permission_setting="can_manage_group"
)
member_users = user_ids_to_users(members, user_profile.realm)
existing_member_ids = set(
get_direct_memberships_of_users(user_group.usergroup_ptr, member_users)