Exemplo n.º 1
0
        private void StoreConnection(int?boardId = null)
        {
            var user = _userResolver.GetUser(Context.User);

            if (user == null)
            {
                return;
            }

            var connectionId = Context.ConnectionId;

            if (boardId.HasValue && !_accessService.HasAccess(user.ID, boardId.Value))
            {
                return;
            }

            if (ActiveConnections.TryGetValue(connectionId, out var syncPoint))
            {
                syncPoint.BoardId = boardId;
            }
            else
            {
                _activeConnections.TryAdd(Context.ConnectionId,
                                          new BoardSynchronizationPoint
                {
                    UserId  = user.ID,
                    BoardId = boardId
                });
            }
        }
        public virtual Task HandleAsync(TCommand command)
        {
            var hasAccess = _accessService.HasAccess(command.UserId, command.BoardId);

            if (!hasAccess)
            {
                throw new ForbiddenException($"This action is forbidden for user {command.UserId}");
            }

            return(Task.CompletedTask);
        }