From 4e3a297efc9b7574889f0565bd27c6072dcb9795 Mon Sep 17 00:00:00 2001
From: Kevin Jahns <kevin.jahns@rwth-aachen.de>
Date: Wed, 19 Jul 2017 19:17:36 +0200
Subject: [PATCH] created doc for the auth method

---
 README.md | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/README.md b/README.md
index 8d5155d5..b86c5b91 100644
--- a/README.md
+++ b/README.md
@@ -55,23 +55,23 @@ Install Yjs, and its modules with [bower](http://bower.io/), or
 [npm](https://www.npmjs.org/package/yjs).
 
 ### Bower
-```
+```sh
 bower install --save yjs y-array % add all y-* modules you want to use
 ```
 You only need to include the `y.js` file. Yjs is able to automatically require
 missing modules.  
-```
+```html
 <script src="./bower_components/yjs/y.js"></script>
 ```
 
 ### Npm
-```
+```sh
 npm install --save yjs % add all y-* modules you want to use
 ```
 
 If you don't include via script tag, you have to explicitly include all modules!
 (Same goes for other module systems)
-```
+```js
 var Y = require('yjs')
 require('y-array')(Y) // add the y-array type to Yjs
 require('y-websockets-client')(Y)
@@ -84,7 +84,7 @@ require('y-text')(Y)
 ```
 
 ### ES6 Syntax
-```
+```js
 import Y from 'yjs'
 import yArray from 'y-array'
 import yWebsocketsClient from 'y-webrtc'
@@ -98,7 +98,7 @@ Y.extend(yArray, yWebsocketsClient, yMemory, yArray, yMap, yText /*, .. */)
 
 # Text editing example
 Install dependencies
-```
+```sh
 bower i yjs y-memory y-webrtc y-array y-text
 ```
 
@@ -166,6 +166,25 @@ soon, if possible.
     endpoint of the used connector.
     * All of our connectors also have a default connection endpoint that you can
       use for development.
+  * We provide basic authentification for all connectors. The value of
+    `options.connector.auth` (this can be a passphase) is sent to all connected
+    Yjs instances. `options.connector.checkAuth` may grant read or write access
+    depending on the `auth` information.
+    Example: A client specifies `options.connector.auth = 'superSecretPassword`.
+    A server specifies
+    ```js
+    options.connector.checkAuth = function (auth, yjsInstance, sender) {
+      return new Promise(function (resolve, reject){
+        if (auth === 'superSecretPassword') {
+          resolve('write') // grant read-write access
+        } else if (auth === 'different password') {
+          resolve('read') // grant read-only access
+        } else {
+          reject('wrong password!') // reject connection
+        }
+      })
+    }
+    ```
   * Set `options.connector.generateUserId = true` in order to genenerate a
     userid, instead of receiving one from the server. This way the `Y(..)` is
     immediately going to be resolved, without waiting for any confirmation from
@@ -181,7 +200,7 @@ soon, if possible.
   * Defaults to `/bower_components`
   * Not required when running on `nodejs` / `iojs`
   * When using nodejs you need to manually extend Yjs:
-```
+```js
 var Y = require('yjs')
 // you have to require a db, connector, and *all* types you use!
 require('y-memory')(Y)