コード例 #1
0
        public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant)
        {
            var permissions = await _temporaryPermissionRepository.FetchTemporaryPermissions(participant);

            return(new List <PermissionLayer> {
                CommonPermissionLayers.Temporary(permissions)
            });
        }
コード例 #2
0
        public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(IScene scene,
                                                                                               Participant participant, IReadOnlyList <IScene> sceneStack)
        {
            if (scene is PresenterScene presenterScene && presenterScene.PresenterParticipantId == participant.Id)
            {
                return(new List <PermissionLayer> {
                    CommonPermissionLayers.ScenePresenter(PresenterPermissions)
                });
            }

            return(Enumerable.Empty <PermissionLayer>());
        }
コード例 #3
0
        public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(IScene scene,
                                                                                               Participant participant, IReadOnlyList <IScene> sceneStack)
        {
            if (scene is TalkingStickScene talkingStickScene)
            {
                var presenterScene = sceneStack.SkipWhile(x => x is not TalkingStickScene).Skip(1)
                                     .OfType <PresenterScene>().LastOrDefault();

                var permissions = GetPermissions(participant, presenterScene, talkingStickScene);
                return(CommonPermissionLayers.ScenePassTheStone(permissions).Yield());
            }

            return(Enumerable.Empty <PermissionLayer>());
        }
コード例 #4
0
        public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant)
        {
            var(conferenceId, participantId) = participant;

            var result = new List <PermissionLayer>
            {
                CommonPermissionLayers.ConferenceDefault(_options.Default[PermissionType.Conference]),
            };

            var conference = await _mediator.Send(new FindConferenceByIdRequest(conferenceId));

            if (conference.Configuration.Moderators.Contains(participantId))
            {
                result.Add(CommonPermissionLayers.ModeratorDefault(_options.Default[PermissionType.Moderator]));
            }

            return(result);
        }
コード例 #5
0
        public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant)
        {
            var(conferenceId, participantId) = participant;

            var conference = await _mediator.Send(new FindConferenceByIdRequest(conferenceId));

            var result = new List <PermissionLayer>();

            if (conference.Permissions.TryGetValue(PermissionType.Conference, out var conferencePermissions))
            {
                result.Add(CommonPermissionLayers.Conference(conferencePermissions));
            }

            if (conference.Configuration.Moderators.Contains(participantId) &&
                conference.Permissions.TryGetValue(PermissionType.Moderator, out var moderatorPermissions))
            {
                result.Add(CommonPermissionLayers.Moderator(moderatorPermissions));
            }

            return(result);
        }
コード例 #6
0
        public async ValueTask <IEnumerable <PermissionLayer> > FetchPermissionsForParticipant(Participant participant)
        {
            var synchronizedRooms =
                await _mediator.FetchSynchronizedObject <SynchronizedRooms>(participant.ConferenceId,
                                                                            SynchronizedRooms.SyncObjId);

            if (!synchronizedRooms.Participants.TryGetValue(participant.Id, out var roomId))
            {
                return(Enumerable.Empty <PermissionLayer>());
            }

            if (roomId == synchronizedRooms.DefaultRoomId)
            {
                return(Enumerable.Empty <PermissionLayer>());
            }

            var breakoutRoomState = await _fetchBreakoutRoomInternalState(participant.ConferenceId);

            if (breakoutRoomState?.OpenedRooms.Contains(roomId) != true)
            {
                return(Enumerable.Empty <PermissionLayer>());
            }

            var result = new List <PermissionLayer>();

            if (_options.Default.TryGetValue(PermissionType.BreakoutRoom, out var breakoutRoomPermissions))
            {
                result.Add(CommonPermissionLayers.BreakoutRoomDefault(breakoutRoomPermissions));
            }

            var conference = await _mediator.Send(new FindConferenceByIdRequest(participant.ConferenceId));

            if (conference.Permissions.TryGetValue(PermissionType.BreakoutRoom, out var permissions))
            {
                result.Add(CommonPermissionLayers.BreakoutRoom(permissions));
            }

            return(result);
        }