Аутентифицировать пользователя и обслуживать только связанные с ним данные

У меня есть схема в graphcool с этими узлами (не знаю, какой здесь правильный термин... лист? узел? модель? тип??)

type User @model {
  auth0UserId: String @isUnique
  createdAt: DateTime!
  id: ID! @isUnique
  userIdentifier: String
  bundleIdentifier: String
  updatedAt: DateTime!
  devices: [Device!]! @relation(name: "UserOnDevice")
  tokens: [Token!]! @relation(name: "TokenOnUser")
}

type Device @model {
  id: ID! @isUnique
  deviceIdentifier: String!
  users: [User!]! @relation(name: "UserOnDevice")
  token: Token @relation(name: "DeviceOnToken")
}

Я хотел бы сделать так, чтобы пользователь должен был аутентифицироваться и быть связан с данными устройства, чтобы иметь возможность запрашивать его. Итак, для запроса типа:

query($deviceIdentifier: String!) {
    device(deviceIdentifier: $deviceIdentifier) {
        id
    }
}

Это должно вернуть null, если они не прошли аутентификацию и не являются пользователем в указанном отношении. Я думал, что мне нужен запрос на разрешение, подобный этому:

query ($node_id: ID!, $user_id: ID!) {
  SomeDeviceExists(filter: {
    id: $node_id,
    users: {
      id: $user_id
    }
  })
}

Но оказывается, что это недействительно. Как это сделать?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
1
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
query ($node_id: ID!, $user_id: ID!) {
  SomeDeviceExists(filter: {
    id: $node_id,
    users_some: {
      id: $user_id
    }
  })
}

но это требует отправки user_id в запросе.

Другие вопросы по теме