Авторизация в резольверах graphql как промежуточное ПО - PullRequest
1 голос
/ 31 мая 2019

Мне нужно проверить, авторизован ли пользователь делать это или делать это в резольверах, но я не хочу писать одинаковые коды в каждом резолвере. Так что, кажется, я должен использовать декораторы. Но я не знаю, как использовать там декораторы без классов.

декодированный UserId из jwt токена - это i req объект с использованием контекста, и мой распознаватель выглядит так:

import { isAllowed } from 'somewhere';
export default {
  Query: {
    async q1(_, args, {req}) {
      if (!isAllowed(req.userId,'action') throw new Error('Not Authorized!');
    },
  ...
}

У меня в голове есть нечто подобное:

export default {
  Query: {
    @isAllowed
    async q1(_, args, {req}) {
      // ...
    },

    // this method doesn't need authorization.
    async q2(_,args, {req}) {

    }
}```

But i don't know how to implement it.

1 Ответ

0 голосов
/ 06 июня 2019

Я обнаружил, что должен использовать Schema directives для обработки авторизации вместо декорации метода распознавателя.

...