Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/busterc/ious
:information_source: use express middleware on socket.io namespaces
https://github.com/busterc/ious
middleware socket-io socket-io-middleware socket-io-server
Last synced: 3 months ago
JSON representation
:information_source: use express middleware on socket.io namespaces
- Host: GitHub
- URL: https://github.com/busterc/ious
- Owner: busterc
- License: isc
- Created: 2017-04-10T21:31:50.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-08-25T21:52:17.000Z (over 6 years ago)
- Last Synced: 2024-09-29T01:01:55.659Z (3 months ago)
- Topics: middleware, socket-io, socket-io-middleware, socket-io-server
- Language: JavaScript
- Homepage:
- Size: 6.84 KB
- Stars: 10
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ious [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url]
> use express middleware on socket.io namespaces## Installation
```sh
$ npm install --save ious
```## Usage
```js
// setup
var app = require('express')();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var ious = require('ious')(io);// some friendly connect/express middlewares
var cookieParser = require('cookie-parser');
var passport = require('passport');
var JwtStrategy = require('passport-jwt').Strategy;passport.use(new JwtStrategy({
secretOrKey: 'YourSecretIsSafeWithMe',
jwtFromRequest: function(request) {
var token = null;
if (request && request.cookies) {
token = request.cookies.jwt;
}
return token;
}
}, function (credentials, done) {
// something like this
require('./user').findOne({ id: credentials.userId }, function(error, user) {
if(error) {
return done(error);
}
if(user) {
return done(null, user);
}
done(null, false);
});
}));// now we're cooking with fire
ious(cookieParser());
ious(passport.intialize());// carry on...
io.on('connection', function (socket) {
// only allow admin roles on this handler
socket.on('do something as an admin', function (callback) {
passport.authenticate('jwt', function (error, user, info) {
if (error) {
return callback(error);
}
if (info instanceof Error) {
return callback(info);
}
if (!user || user.role !== 'admin') {
return callback('User Not Authenticated');
}
// user is authenticated and authorized
return require('./admin').doSomething(callback);
})(socket.request, socket.request.res, callback);
});
});
```
## LicenseISC © [Buster Collings](https://about.me/buster)
[npm-image]: https://badge.fury.io/js/ious.svg
[npm-url]: https://npmjs.org/package/ious
[travis-image]: https://travis-ci.org/busterc/ious.svg?branch=master
[travis-url]: https://travis-ci.org/busterc/ious
[daviddm-image]: https://david-dm.org/busterc/ious.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/busterc/ious