@graphql-authz/envelop-plugin

Envelop plugin for graphql-authz

Usage no npm install needed!

<script type="module">
  import graphqlAuthzEnvelopPlugin from 'https://cdn.skypack.dev/@graphql-authz/envelop-plugin';
</script>

README

@graphql-authz/envelop-plugin

Configuring for Envelop

Ensure context parser is configured to perform authentication and add user info to context

  const getEnveloped = envelop({
    plugins: [
      ...
      useExtendContext(req => ({
        user: someHowAuthenticateUser(req.get("authorization"))),
      })),
      ...
    ]
  });

or

  getEnveloped({
    user: someHowAuthenticateUser(req.get("authorization"))),
  });

Add plugin to envelop

  import { authZEnvelopPlugin } from "@graphql-authz/envelop-plugin";
  
  const getEnveloped = envelop({
    plugins: [
      ...
      authZEnvelopPlugin({ rules })
      ...
    ]
  });

For Directives usage

Apply directive transformer to schema

import { authZDirective } from '@graphql-authz/directive';
import { authZEnvelopPlugin } from "@graphql-authz/envelop-plugin";

const { authZDirectiveTransformer } = authZDirective();

const transformedSchema = authZDirectiveTransformer(schema);

const getEnveloped = envelop({
  plugins: [
    useSchema(transformedSchema),
    authZEnvelopPlugin({ rules })
    ...
  ]
});

For AuthSchema usage

Pass additional parameter authSchema to authZEnvelopPlugin

import { authZEnvelopPlugin } from "@graphql-authz/envelop-plugin";
  
const getEnveloped = envelop({
  plugins: [
    ...
    authZEnvelopPlugin({ rules, authSchema })
    ...
  ]
});