1
- # ious [ ![ NPM version] [ npm-image ]] [ npm-url ] [ ![ Build Status] [ travis-image ]] [ travis-url ] [ ![ Dependency Status] [ daviddm-image ]] [ daviddm-url ] [ ![ Coverage percentage ] [ coveralls-image ]] [ coveralls-url ]
1
+ # ious [ ![ NPM version] [ npm-image ]] [ npm-url ] [ ![ Build Status] [ travis-image ]] [ travis-url ] [ ![ Dependency Status] [ daviddm-image ]] [ daviddm-url ]
2
2
> use express middleware on socket.io namespaces
3
3
4
4
## Installation
@@ -18,13 +18,55 @@ var ious = require('ious')(io);
18
18
19
19
// some friendly connect/express middlewares
20
20
var cookieParser = require (' cookie-parser' );
21
- var passport = require (' passport' ); // <- i recommend using the JWT strategy
21
+ var passport = require (' passport' );
22
+ var JwtStrategy = require (' passport-jwt' ).Strategy ;
22
23
23
- // this is how we do it
24
+ passport .use (new JwtStrategy ({
25
+ secretOrKey: ' YourSecretIsSafeWithMe' ,
26
+ jwtFromRequest : function (request ) {
27
+ var token = null ;
28
+ if (request && request .cookies ) {
29
+ token = request .cookies .jwt ;
30
+ }
31
+ return token;
32
+ }
33
+ }, function (credentials , done ) {
34
+ // something like this
35
+ require (' ./user' ).findOne ({ id: credentials .userId }, function (error , user ) {
36
+ if (error) {
37
+ return done (error);
38
+ }
39
+ if (user) {
40
+ return done (null , user);
41
+ }
42
+ done (null , false );
43
+ });
44
+ }));
45
+
46
+ // now we're cooking with fire
24
47
ious (cookieParser ());
25
48
ious (passport .intialize ());
26
49
27
50
// carry on...
51
+
52
+ io .on (' connection' , function (socket ) {
53
+ // only allow admin roles on this handler
54
+ socket .on (' do something as an admin' , function (callback ) {
55
+ passport .authenticate (' jwt' , function (error , user , info ) {
56
+ if (error) {
57
+ return callback (error);
58
+ }
59
+ if (info instanceof Error ) {
60
+ return callback (info);
61
+ }
62
+ if (! user || user .role !== ' admin' ) {
63
+ return callback (' User Not Authenticated' );
64
+ }
65
+ // user is authenticated and authorized
66
+ return require (' ./admin' ).doSomething (callback);
67
+ })(socket .request , socket .request .res , callback);
68
+ });
69
+ });
28
70
```
29
71
## License
30
72
@@ -37,5 +79,3 @@ ISC © [Buster Collings](https://about.me/buster)
37
79
[ travis-url ] : https://travis-ci.org/busterc/ious
38
80
[ daviddm-image ] : https://david-dm.org/busterc/ious.svg?theme=shields.io
39
81
[ daviddm-url ] : https://david-dm.org/busterc/ious
40
- [ coveralls-image ] : https://coveralls.io/repos/busterc/ious/badge.svg
41
- [ coveralls-url ] : https://coveralls.io/r/busterc/ious
0 commit comments