Я реализовал уровень авторизации AWS Lambda для моих запросов и изменений GraphQL, так что пользователь может только читать / записывать данные в конкретный элемент таблицы DynamoDB, если он является членом группы, к которой принадлежит элемент, реализовано с использованием раздела groupId key и ключ сортировки itemId. Так что в таблице может быть много itemId с общим groupId, а также много разных groupId. Все работает так, как ожидалось.
Теперь я хотел бы иметь возможность распространить эту групповую авторизацию на мои подписки GraphQL в реальном времени. Я наблюдаю, что неограниченные подписки транслируются для всех пользователей. Мне нужно решение, которое ограничивает события подписки таким образом, чтобы все члены группы и только члены группы получали событие подписки для мутаций табличных данных, содержащих соответствующий ключ groupID. Пользователь, являющийся членом многих групп, будет получать события подписки для всех групп, членом которых он является.
Группы и члены группы являются динамическими, при этом группы создаются, а участники добавляются с помощью бизнес-логики приложения.
Я наблюдаю множество статических и динамических методов авторизации AWS. Я видел примеры параметризованных подписок и преобразователей подписок, которые нацелены на подписку только на один элемент, но я не видел ничего, что соответствовало бы моей конкретной «многогрупповой» потребности.
Я использую API AWS Amplify для клиентских вызовов GraphQL. Я заметил, что у Apollo есть subscribeToMore (), который может быть полезен для этого сценария, но в настоящее время я предпочитаю держаться подальше от доработки, необходимой мне, чтобы приспособить мой пользовательский интерфейс к шаблону Render Props Apollo 2.
Есть предположения?