diff options
author | Joas Schilling <coding@schilljs.com> | 2023-05-02 10:03:38 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2023-05-03 08:51:14 +0200 |
commit | 7dc8e402294d5185aa214e6c0d413066dc863a31 (patch) | |
tree | 4d09d7982f25830835f90a7e9c4718f87cba526c | |
parent | b140bcf69116e5732c510f83ca368f7ed816cb12 (diff) |
fix(participants): Migrate self-joined users when assigning permissions
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r-- | docs/participant.md | 2 | ||||
-rw-r--r-- | lib/Service/ParticipantService.php | 3 | ||||
-rw-r--r-- | tests/integration/features/conversation-2/set-permissions.feature | 17 |
3 files changed, 20 insertions, 2 deletions
diff --git a/docs/participant.md b/docs/participant.md index f3faccf04..af875420f 100644 --- a/docs/participant.md +++ b/docs/participant.md @@ -210,6 +210,8 @@ ## Set permissions for an attendee +Setting custom permissions for a self-joined user will also make them a permanent user to the conversation. + * Method: `PUT` * Endpoint: `/room/{token}/attendees/permissions` * Data: diff --git a/lib/Service/ParticipantService.php b/lib/Service/ParticipantService.php index 225f32986..4f14b456c 100644 --- a/lib/Service/ParticipantService.php +++ b/lib/Service/ParticipantService.php @@ -242,6 +242,9 @@ class ParticipantService { $this->dispatcher->dispatch(Room::EVENT_BEFORE_PARTICIPANT_PERMISSIONS_SET, $event); $attendee->setPermissions($newPermissions); + if ($attendee->getParticipantType() === Participant::USER_SELF_JOINED) { + $attendee->setParticipantType(Participant::USER); + } $this->attendeeMapper->update($attendee); $this->dispatcher->dispatch(Room::EVENT_AFTER_PARTICIPANT_PERMISSIONS_SET, $event); diff --git a/tests/integration/features/conversation-2/set-permissions.feature b/tests/integration/features/conversation-2/set-permissions.feature index c88039824..1005cda7a 100644 --- a/tests/integration/features/conversation-2/set-permissions.feature +++ b/tests/integration/features/conversation-2/set-permissions.feature @@ -87,8 +87,6 @@ Feature: conversation-2/set-publishing-permissions | users | owner | SJLAVPM | | users | invited user | SJAVPM | - - Scenario: setting call permissions resets participant permissions Given user "owner" creates room "group room" (v4) | roomType | 2 | @@ -136,3 +134,18 @@ Feature: conversation-2/set-publishing-permissions | actorType | actorId | permissions | attendeePermissions | | users | owner | SJLAVPM | D | | users | invited user | CV | D | + + Scenario: setting permissions for a self joined user adds them permanently + Given user "owner" creates room "room" (v4) + | roomType | 3 | + | roomName | room | + And user "invited user" joins room "room" with 200 (v4) + And user "owner" sees the following attendees in room "room" with 200 (v4) + | actorType | actorId | permissions | attendeePermissions | participantType | + | users | owner | SJLAVPM | D | 1 | + | users | invited user | SJAVPM | D | 5 | + And user "owner" sets permissions for "invited user" in room "room" to "LAVPM" with 200 (v4) + And user "owner" sees the following attendees in room "room" with 200 (v4) + | actorType | actorId | permissions | attendeePermissions | participantType | + | users | owner | SJLAVPM | D | 1 | + | users | invited user | CLAVPM | CLAVPM | 3 | |