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); }