From 815eefc509cbf1113b4cec68e53e6b787c665334 Mon Sep 17 00:00:00 2001 From: Yannis Barlas <yannisbarlas@gmail.com> Date: Mon, 11 May 2020 21:23:47 +0300 Subject: [PATCH] docs(middleware): add auth docs to readme --- README.md | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ec8a8a3..cde7de9 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,49 @@ If you place this file in `server/app.js`, starting the server should work autom } ``` +### Authorization middleware + +The server provides authorization checks through using `graphql-shield`. +You can access all of shield's exports (eg. `rule`, `and`, `or` etc.) through `@coko/server/authorization`. +The only exception is `shield`, which is used internally by the server. + +To get started, declare your permissions in any file you want: + +```js +// myPermissions.js + +const { rule } = require('@coko/server/authorization') + +const permissions = { + Query: { + myQuery: rule()(async (parent, args, ctx, info) => { + // my auth logic here + }), + }, + Mutation: { + myMutation: rule()(async (parent, args, ctx, info) => { + // my other auth logic here + }), + }, +} + +module.exports = permissions +``` + +For the server to access your permissions, simply add them to the config: + +```js +// config/default.js + +const permissions = require('../path/to/myPermissions.js') + +{ + permissions: permissions +} +``` + +Please refer to shield's [documentation](https://github.com/maticzav/graphql-shield#overview) for more details. + ### Cron support All you need for cron-based scheduled tasks to run is to provide the path to your cron jobs. @@ -85,5 +128,5 @@ If you run your client on a different host/port than the server, you might run i ### Future features -- Graphql middleware +- Notification middleware - Include more pubsweet packages into the bundle -- GitLab