예제 #1
0
        public async Task <ActionResult <IEnumerable <ChatMessageDTO> > > ListMessagesForGroup(Guid chatGroupUuid)
        {
            string userEmail = User.FindFirstValue(ClaimTypes.Email);
            User   user      = await _userManager.FindByEmailAsync(userEmail);

            if (user == null)
            {
                return(Forbid());
            }

            ChatGroupUser chatGroupUser = await _chatGroupUserService.GetByUserAndChatGroupAsync(
                user.Id, chatGroupUuid);

            // Check if user is authorized to read users for the chat group
            AuthorizationResult isAuthorized = await _authorizationService.AuthorizeAsync(
                User,
                chatGroupUser,
                Operations.Create);

            if (!isAuthorized.Succeeded)
            {
                return(Forbid());
            }

            IEnumerable <ChatMessageDTO> messages = await _chatMessageService.ListMessagesForGroupAsync(chatGroupUuid);

            return(Ok(messages));
        }