Recommended way for authorisation/authentication in Postgraphile?
Since [postgraphile does not provide a hook to run JWT verification prior to running each query/mutation](https://github.com/graphile/postgraphile/issues/1454#issuecomment-892458361) at runtime, I tried to use the traditional approach of using JWT middleware with Express as shown below (note that without `credentialsRequired:false` the Apollo Gateway does not kick start and yells for missing Authorization header):

```
// Apollo Gateway
const app = express();

app.use(
  jwt({
    secret: 'secret',
    algorithms: ['HS256'],
    credentialsRequired: false,
  })
);

const server = new ApolloServer({
    debug: true,
    playground: true,
    schema,
    executor,
    context: ({ req }) => {
      const user = req.user || null;
      return { user };
    },
});
 
const serviceList = [
  {
    name: 'postgraphile-apollo1',
    url: `http://localhost:5001/graphql`,
  },
];
const gateway = new ApolloGateway({
  serviceList,
  buildService({ url }) {
    return new RemoteGraphQLDataSource({
      url,
      willSendRequest({ request, context }) {
        request.http.headers.set(
          'user',
          context.user ? JSON.stringify(context.user) : null
        );
      },
    });
  },
});
```

Here, I stamp the JWT payload on `context` and pass it further down the subgraph via HTTP header. However, this just makes every query/mutation public, meaning it does not abort the query/mutation if Authorisation header was missing.

Any way to read the `user` header in the Subgraph to figure out if Authorisation header exists at Gateway level?
Or any better way?

```
// Federated Service http://localhost:5001/graphql
interface MyIncomingMessage extends IncomingMessage {
  user: { user: string };
}

const app = express();

app.use(
  postgraphile('postgres://foo@localhost:5432/bar', 'public', {
    watchPg: true,
    graphiql: true,
    enhanceGraphiql: true,
    appendPlugins: [FederationPlugin],
    pgSettings: (req: MyIncomingMessage) => {
      return {
        'user.username': req.user?.user,
      };
    },
  })
);
```
