Class ConversationPermissionServiceImpl

  • All Implemented Interfaces:
    ConversationPermissionService

    public class ConversationPermissionServiceImpl
    extends Object
    implements ConversationPermissionService
    The default implementation of the permission helper checking permissions for certain conversation related actions with the help of a two-step DMN decision model approach. There is a first, global DMN model where quick and fast permissions are checked first (e.g. nothing is allowed within an archived conversation, etc). The result of that first step might say you need to check the actions detail DMN table which is then the second step. There is a detailed DMN decision model for each action to check for its particular permissions.
    Author:
    Micha Kiener, Filip Hrisafov
    • Constructor Detail

      • ConversationPermissionServiceImpl

        public ConversationPermissionServiceImpl​(EngageEngineConfiguration engageEngineConfiguration)
    • Method Detail

      • checkCreateConversation

        @Deprecated
        public Optional<String> checkCreateConversation​(String userId,
                                                        String parentConversationId,
                                                        ConversationBuilder conversationBuilder)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when creating a new conversation with an optional parent conversation (e.g. if creating a sub-conversation like a topic or ticket).
        Specified by:
        checkCreateConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        parentConversationId - the optional parent conversation, if the new one is a child (sub-conversation), might be null
        conversationBuilder - the builder having all the details of the new conversation to be started, needs at least type and subtype to be set
        Returns:
        the permission error message, if permission is denied to start the new conversation or no message, if permission is granted
      • checkCreateConversation

        public Optional<String> checkCreateConversation​(String userId,
                                                        Collection<String> userGroupKeys,
                                                        String userTenantId,
                                                        String parentConversationId,
                                                        ConversationBuilder conversationBuilder)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when creating a new conversation with an optional parent conversation (e.g. if creating a sub-conversation like a topic or ticket).
        Specified by:
        checkCreateConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        parentConversationId - the optional parent conversation, if the new one is a child (sub-conversation), might be null
        conversationBuilder - the builder having all the details of the new conversation to be started, needs at least type and subtype to be set
        Returns:
        the permission error message, if permission is denied to start the new conversation or no message, if permission is granted
      • checkUpdateConversationName

        @Deprecated
        public Optional<String> checkUpdateConversationName​(String userId,
                                                            String conversationId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when updating the conversation name.
        Specified by:
        checkUpdateConversationName in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation where the name is being changed
        Returns:
        the permission error message, if permission is denied to change the conversation name or no message, if permission is granted
      • checkUpdateConversationName

        public Optional<String> checkUpdateConversationName​(String userId,
                                                            Collection<String> userGroupKeys,
                                                            String userTenantId,
                                                            String conversationId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when updating the conversation name.
        Specified by:
        checkUpdateConversationName in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation where the name is being changed
        Returns:
        the permission error message, if permission is denied to change the conversation name or no message, if permission is granted
      • checkUpdateConversationDescription

        @Deprecated
        public Optional<String> checkUpdateConversationDescription​(String userId,
                                                                   String conversationId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when updating the conversation description.
        Specified by:
        checkUpdateConversationDescription in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation where the description is being changed
        Returns:
        the permission error message, if permission is denied to change the conversation description or no message, if permission is granted
      • checkUpdateConversationDescription

        public Optional<String> checkUpdateConversationDescription​(String userId,
                                                                   Collection<String> userGroupKeys,
                                                                   String userTenantId,
                                                                   String conversationId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when updating the conversation description.
        Specified by:
        checkUpdateConversationDescription in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation where the description is being changed
        Returns:
        the permission error message, if permission is denied to change the conversation description or no message, if permission is granted
      • checkArchiveConversation

        @Deprecated
        public Optional<String> checkArchiveConversation​(String userId,
                                                         String conversationId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when archiving an existing conversation.
        Specified by:
        checkArchiveConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation to be archived
        Returns:
        the permission error message, if permission is denied to archive the conversation or no message, if permission is granted
      • checkArchiveConversation

        public Optional<String> checkArchiveConversation​(String userId,
                                                         Collection<String> userGroupKeys,
                                                         String userTenantId,
                                                         String conversationId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when archiving an existing conversation.
        Specified by:
        checkArchiveConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to be archived
        Returns:
        the permission error message, if permission is denied to archive the conversation or no message, if permission is granted
      • checkReopenConversation

        @Deprecated
        public Optional<String> checkReopenConversation​(String userId,
                                                        String conversationId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when re-opening an archived conversation.
        Specified by:
        checkReopenConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation to be re-opened
        Returns:
        the permission error message, if permission is denied to re-open the conversation or no message, if permission is granted
      • checkReopenConversation

        public Optional<String> checkReopenConversation​(String userId,
                                                        Collection<String> userGroupKeys,
                                                        String userTenantId,
                                                        String conversationId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when re-opening an archived conversation.
        Specified by:
        checkReopenConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to be re-opened
        Returns:
        the permission error message, if permission is denied to re-open the conversation or no message, if permission is granted
      • checkJoinParticipantToExistingConversation

        @Deprecated
        public Optional<String> checkJoinParticipantToExistingConversation​(String userId,
                                                                           String conversationId,
                                                                           String newParticipantUserId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when inviting a new participant to an existing conversation.
        Specified by:
        checkJoinParticipantToExistingConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation to join the new participant to
        Returns:
        the permission error message, if permission is denied to join the new participant or no message, if permission is granted
      • checkJoinParticipantToExistingConversation

        public Optional<String> checkJoinParticipantToExistingConversation​(String userId,
                                                                           Collection<String> userGroupKeys,
                                                                           String userTenantId,
                                                                           String conversationId,
                                                                           String newParticipantUserId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when inviting a new participant to an existing conversation.
        Specified by:
        checkJoinParticipantToExistingConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to join the new participant to
        Returns:
        the permission error message, if permission is denied to join the new participant or no message, if permission is granted
      • checkDropParticipantFromConversation

        @Deprecated
        public Optional<String> checkDropParticipantFromConversation​(String userId,
                                                                     String conversationId,
                                                                     String droppedParticipantUserId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when dropping a participant from a conversation.
        Specified by:
        checkDropParticipantFromConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation from which the participant should be dropped
        droppedParticipantUserId - the id of the participant user to be dropped
        Returns:
        the permission error message, if permission is denied to drop the participant or no message, if permission is granted
      • checkDropParticipantFromConversation

        public Optional<String> checkDropParticipantFromConversation​(String userId,
                                                                     Collection<String> userGroupKeys,
                                                                     String userTenantId,
                                                                     String conversationId,
                                                                     String droppedParticipantUserId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when dropping a participant from a conversation.
        Specified by:
        checkDropParticipantFromConversation in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation from which the participant should be dropped
        droppedParticipantUserId - the id of the participant user to be dropped
        Returns:
        the permission error message, if permission is denied to drop the participant or no message, if permission is granted
      • checkPostMessage

        @Deprecated
        public Optional<String> checkPostMessage​(String userId,
                                                 String conversationId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when posting a message to a conversation.
        Specified by:
        checkPostMessage in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation to post the message to
        Returns:
        the permission error message, if permission is denied to post a message or no message, if permission is granted
      • checkPostMessage

        public Optional<String> checkPostMessage​(String userId,
                                                 Collection<String> userGroupKeys,
                                                 String userTenantId,
                                                 String conversationId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when posting a message to a conversation.
        Specified by:
        checkPostMessage in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to post the message to
        Returns:
        the permission error message, if permission is denied to post a message or no message, if permission is granted
      • checkEditMessage

        @Deprecated
        public Optional<String> checkEditMessage​(String userId,
                                                 String conversationId,
                                                 String messageId)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when editing an existing message of a conversation.
        Specified by:
        checkEditMessage in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation to edit a message from
        messageId - the id of the message to be edited
        Returns:
        the permission error message, if permission is denied to edit a message or no message, if permission is granted
      • checkEditMessage

        public Optional<String> checkEditMessage​(String userId,
                                                 Collection<String> userGroupKeys,
                                                 String userTenantId,
                                                 String conversationId,
                                                 String messageId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when editing an existing message of a conversation.
        Specified by:
        checkEditMessage in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to edit a message from
        messageId - the id of the message to be edited
        Returns:
        the permission error message, if permission is denied to edit a message or no message, if permission is granted
      • checkPostMedia

        @Deprecated
        public Optional<String> checkPostMedia​(String userId,
                                               String conversationId,
                                               String mimeType)
        Deprecated.
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when posing a media to a conversation.
        Specified by:
        checkPostMedia in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        conversationId - the id of the conversation to post the media to
        mimeType - the mime type of the media that is being posted
        Returns:
        the permissions error message, if it is not allowed to the media, Optional.empty() if it is allowed
      • checkPostMedia

        public Optional<String> checkPostMedia​(String userId,
                                               Collection<String> userGroupKeys,
                                               String userTenantId,
                                               String conversationId,
                                               String mimeType)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when posing a media to a conversation.
        Specified by:
        checkPostMedia in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to post the media to
        mimeType - the mime type of the media that is being posted
        Returns:
        the permissions error message, if it is not allowed to the media, Optional.empty() if it is allowed
      • checkUpdateConversationAvatar

        public Optional<String> checkUpdateConversationAvatar​(String userId,
                                                              Collection<String> userGroupKeys,
                                                              String userTenantId,
                                                              String conversationId)
        Description copied from interface: ConversationPermissionService
        Evaluates the permissions for the given user when posing a media to a conversation.
        Specified by:
        checkUpdateConversationAvatar in interface ConversationPermissionService
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant id of the user to check the permissions
        conversationId - the id of the conversation to post the media to
        Returns:
        the permissions error message, if it is not allowed to the media, Optional.empty() if it is allowed
      • checkPostVoiceMessage

        protected Optional<String> checkPostVoiceMessage​(String userId,
                                                         Collection<String> userGroupKeys,
                                                         String userTenantId,
                                                         String conversationId)
        Evaluates the permissions for the given user when posting a voice message to a conversation.
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant of the user to check the permissions
        conversationId - the id of the conversation to post the voice message to
        Returns:
        the permission error message, if permission is denied to post a voice message or no message, if permission is granted
      • checkPostVideoMessage

        protected Optional<String> checkPostVideoMessage​(String userId,
                                                         Collection<String> userGroupKeys,
                                                         String userTenantId,
                                                         String conversationId)
        Evaluates the permissions for the given user when posting a video message to a conversation.
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant of the user to check the permissions
        conversationId - the id of the conversation to post the video message to
        Returns:
        the permission error message, if permission is denied to post a video message or no message, if permission is granted
      • checkPostImage

        protected Optional<String> checkPostImage​(String userId,
                                                  Collection<String> userGroupKeys,
                                                  String userTenantId,
                                                  String conversationId)
        Evaluates the permissions for the given user when posting an image to a conversation.
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant of the user to check the permissions
        conversationId - the id of the conversation to post the image to
        Returns:
        the permission error message, if permission is denied to post an image or no message, if permission is granted
      • checkPostDocument

        protected Optional<String> checkPostDocument​(String userId,
                                                     Collection<String> userGroupKeys,
                                                     String userTenantId,
                                                     String conversationId)
        Evaluates the permissions for the given user when posting a document to a conversation.
        Parameters:
        userId - the id of the user to check the permissions
        userGroupKeys - the group keys of the user to check the permissions
        userTenantId - the tenant of the user to check the permissions
        conversationId - the id of the conversation to post the document to
        Returns:
        the permission error message, if permission is denied to post a document or no message, if permission is granted
      • fetchPermissions

        public Collection<String> fetchPermissions​(Conversation conversation,
                                                   String userId,
                                                   Set<String> groupKeys,
                                                   String tenantId)
        Description copied from interface: ConversationPermissionService
        Fetch the permission actions that are allowed for the conversation for the given user
        Specified by:
        fetchPermissions in interface ConversationPermissionService
        Parameters:
        conversation - the conversation for which the actions should be fetched
        userId - the id of the user
        groupKeys - the group keys of the user
        tenantId - the tenant id of the user
        Returns:
        the collection of the permission actions
      • mapExternalSystemSupportedMessageTypeToPermission

        protected String mapExternalSystemSupportedMessageTypeToPermission​(String supportedType)
      • fetchExternalSystemSupportedSendMessageTypes

        protected Collection<String> fetchExternalSystemSupportedSendMessageTypes​(Collection<String> userAccountIds)