use-express-middleware
The main purpose of this module is to use express middleware for
authentication in deepstream.io.
If you find other uses for this module, please let me know.
Install:
npm install use-express-middleware --save
Tested Middleware:
✓ express-session
✓ passport.initialize()
✓ passport.session()
Usage:
Deepstream passport authentication:
import Deepstream from 'deepstream.io'
import useExpressMiddleware from 'use-express-middleware'
import expressSession from 'express-session'
import passport from 'passport'
const server = new Deepstream()
const session = expressSession({
...options
})
const middleware = [session, passport.initialize(), passport.session()]
server.set('permissionHandler', {
isValidUser(connectionData, authData, callback) {
useExpressMiddleware(connectionData.headers, middleware, (req, res) => {
if(req.user) {
callback(null, req.user.id)
} else {
callback(null, 'open')
}
})
},
canPerformAction(id, message, callback) {
const user = getUserFromId(id)
callback(null, user.isAdmin)
}
})
server.set('permissionHandler', {
isValidUser: async (connectionData, authData, callback) => {
const {req, res} = await useExpressMiddleware(connectionData.headers, middleware)
if(req.user) {
callback(null, req.user.id)
} else {
callback(null, 'open')
}
},
...
})
How does this work?
TODO