summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2023-05-02 10:03:38 +0200
committerJoas Schilling <coding@schilljs.com>2023-05-03 08:51:14 +0200
commit7dc8e402294d5185aa214e6c0d413066dc863a31 (patch)
tree4d09d7982f25830835f90a7e9c4718f87cba526c
parentb140bcf69116e5732c510f83ca368f7ed816cb12 (diff)
fix(participants): Migrate self-joined users when assigning permissions
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r--docs/participant.md2
-rw-r--r--lib/Service/ParticipantService.php3
-rw-r--r--tests/integration/features/conversation-2/set-permissions.feature17
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 |