UNPKG

1.08 kBJavaScriptView Raw
1'use strict'
2
3const Boom = require('boom')
4const express = require('express')
5const nock = require('nock')
6const Rbac = require('../lib')
7
8// Authorize server mock
9const opts = {
10 reqheaders: {
11 authorization: /Bearer\s\S+/ // You need to pass along the token for your requests
12 }
13}
14nock('http://www.example.com', opts)
15 .post('/authorize', {
16 permissions: ['users:read']
17 })
18 .times(1000)
19 .delay(500)
20 .reply(200)
21 .post('/authorize', '*')
22 .times(1000)
23 .delay(500)
24 .reply(401)
25
26// Your server below
27const rbac = new Rbac({
28 remoteAuth: {
29 url: 'http://www.example.com/authorize'
30 }
31})
32
33const app = express()
34
35app.get('/',
36 rbac.express.authorizeRemote(['users:read']),
37 (req, res, next) => {
38 res.json({ message: 'You have acces to this awesome content!' })
39 })
40
41app.get('/favicon.ico', (req, res, next) => res.sendStatus(200))
42
43app.use((err, req, res, next) => {
44 if (!err.isBoom) {
45 err = Boom.wrap(err)
46 }
47 return res
48 .status(err.output.statusCode)
49 .send(err.output.payload)
50})
51
52app.listen(3000, () => console.log('Listening @ 3000'))