SimonDegraeve / hapi-graphql

Create a GraphQL HTTP server with Hapi.
115 stars 27 forks source link

Added rootValue execution. Fixes #15 #16

Open faceleg opened 8 years ago

faceleg commented 8 years ago

This is to allow the injection of things like User ID's into rootValue from the request, for cases where the /graphql endpoint require authentication.

Example:

server.register({
      register: GraphQL,
      options: {
        route: {
          path: '/graphql',
          config: {
            auth: 'token',
            tags: ['api']
          }
        },
        query: {
          schema: GraphQLSchema,
          graphiql: true,
          rootValue: {
            ip: function (args, request) {
              return request.info.remoteAddress;
            }
          },
          formatError: error => ({
            message: error.message,
            locations: error.locations,
            stack: error.stack
          })
        }
      }
    });

Relevant: http://graphql.org/graphql-js/authentication-and-express-middleware/