Skip to content

Instantly share code, notes, and snippets.

@danil-z
Created January 24, 2015 20:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danil-z/0fea5df3e7fd96cd1eea to your computer and use it in GitHub Desktop.
Save danil-z/0fea5df3e7fd96cd1eea to your computer and use it in GitHub Desktop.
primus jwt
'use strict';
var Primus = require('primus.io'),
authParser = require('parse-bearer-token'),
config = require('../../../config'),
debug = require('debug')('myprimus'),
jwt = require('jsonwebtoken');
function authCheck(token, req, done){
jwt.verify(token, config.jwt_secret, function(err, decoded) {
if (err) {
debug('authCheck failed');
done(err);
} else {
debug('authCheck passed');
req.decoded_token = decoded;
done();
}
});
}
function setup(server){
var primus = new Primus(server, { transformer: 'websockets', parser: 'JSON' , timeout: 630000});
primus.authorize(function (req, done) {
var token;
try { token = authParser(req) }
catch (ex) { return done(ex) }
authCheck(token, req, done);
});
primus.on('connection', function (spark) {
debug('primus client connected');
});
}
module.exports.setup = setup;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment