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