Cooperative Blue ====== Installation: ---- ``` git clone cd cooperative-blue npm i node index.js ``` Requirements ---- mongodb on localhost API --- ``` mutation createUser($login:String!, $password:String!){ createUser(login:$login, password:$password){ _id, login } } query login($login:String!, $password:String!){ login(login:$login, password:$password) } mutation pwd($password:String!){ changePassword(password: $password){ _id, login } } mutation createEvent($name:String!, $total:Float!){ createEvent(name:$name,total:$total){ _id, name } } mutation changeEvent($eventId:String!, $name:String!, $total:Float!){ changeEvent(eventId:$eventId, name:$name, total:$total){ _id, name, owner } } query events{ events{ _id, name, owner, usersSum, moneyDiff, total } } mutation createEventMoney($eventId:String!, $amount:Float!){ createEventMoney(eventId:$eventId, amount:$amount){ _id, user{ _id,login }, event{ _id, name} , amount } } query em{ eventMoneys{ _id, user{ _id, login } event{ _id, } amount } } query eme($eventId: String!){ eventMoneysByEvent(eventId:$eventId){ _id, owner, event{ _id, } amount } } ``` `createUser` and `login` works without jwt token, All others resolvers runs only with token provided. To teach graphiql works with token open console and substitute `fetch` with tuned one: ```javascript let authToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOnsiaWQiOiI1ZDMzM2I0MjM2MjZlMDc2ZTRjZjcyNDEiLCJsb2dpbiI6ImZvbyJ9LCJpYXQiOjE1NjM2Mzg2MTJ9.G2PxsUH8-ODv07hz_sP_JJfILxymlOw3lPDGgwBzvuk"; const originalFetch = fetch; fetch = (url, params={headers:{}}) => { params.headers.Authorization = "Bearer " + authToken return originalFetch(url, params) } ``` this new `fetch` will override default, so graphiql will pass **authorization** header with every query;