Skip to content

artema/passport.socketcluster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SocketCluster Passport.js authentication middleware

NPM

A SocketCluster middleware for authenticating socket connections with Passport.js.

Installation

npm install passport.socketcluster

Usage

//worker.js

var session = require('express-session'),
    express = require('express'),
    cookieParser = require('cookie-parser'),
    passport = require('passport'),
    passportSocketCluster = require('passport.socketcluster'),
    RedisStore = require('connect-redis')(session);

module.exports.run = function(worker) {
  var app = express(),
      store = new RedisStore(),
      cookieKey = 'session',
      cookieSecret = 'keyboard cat';

  var server = worker.getHTTPServer(),
      sc = worker.getSCServer();

  server.on('req', app);

  app.use(session({
    name:     cookieKey,
    secret:   cookieSecret,
    store:    store
  }));

  app.use(passport.initialize());
  app.use(passport.session());
  
  //Handshake authentication
  sc.addMiddleware(sc.MIDDLEWARE_HANDSHAKE, passportSocketCluster.handshake({
    cookieParser:cookieParser,
    key:         cookieKey,
    secret:      cookieSecret,
    store:       store,
    passport:    passport,
    callback:    function(err, req, user, next) {
      if (err) {
        return next(err);
      }
      //Save Passport user for later use
      req.session.set('user', user, next);
    }
  }));
};

Releases

No releases published

Packages

No packages published