|  | @@ -7,15 +7,15 @@ const path = require('path'),
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // npm modules
 | 
	
		
			
				|  |  |  const express          = require('express'),
 | 
	
		
			
				|  |  | -      session          = require('express-session'),
 | 
	
		
			
				|  |  | -      rethinkdbStore   = require('session-rethinkdb')(session),
 | 
	
		
			
				|  |  | -      bodyParser       = require('body-parser'),
 | 
	
		
			
				|  |  | -      config           = require('config'),
 | 
	
		
			
				|  |  | -      request          = require('request'),
 | 
	
		
			
				|  |  | -      r                = require('rethinkdb'),
 | 
	
		
			
				|  |  | -      passport         = require('passport'),
 | 
	
		
			
				|  |  | -      localStrategy    = require('passport-local').Strategy,
 | 
	
		
			
				|  |  | -      passportSocketIo = require("passport.socketio");
 | 
	
		
			
				|  |  | +    session          = require('express-session'),
 | 
	
		
			
				|  |  | +    mongoose         = require('mongoose'),
 | 
	
		
			
				|  |  | +    mongoStore       = require('connect-mongo')(session),
 | 
	
		
			
				|  |  | +    bodyParser       = require('body-parser'),
 | 
	
		
			
				|  |  | +    config           = require('config'),
 | 
	
		
			
				|  |  | +    request          = require('request'),
 | 
	
		
			
				|  |  | +    passport         = require('passport'),
 | 
	
		
			
				|  |  | +    localStrategy    = require('passport-local').Strategy,
 | 
	
		
			
				|  |  | +    passportSocketIo = require("passport.socketio");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // custom modules
 | 
	
		
			
				|  |  |  const global         = require('./logic/global'),
 | 
	
	
		
			
				|  | @@ -23,68 +23,89 @@ const global         = require('./logic/global'),
 | 
	
		
			
				|  |  |        socketHandler  = require('./logic/socketHandler'),
 | 
	
		
			
				|  |  |        expressHandler = require('./logic/expressHandler');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// database
 | 
	
		
			
				|  |  | +const MongoDB = mongoose.connect('mongodb://localhost:27017/musare').connection;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +MongoDB.on('error', function(err) {
 | 
	
		
			
				|  |  | +    console.log('Database error: ' + err.message);
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +MongoDB.once('open', function() {
 | 
	
		
			
				|  |  | +    console.log('Connected to database');
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const db = {
 | 
	
		
			
				|  |  | +    user: require('./schemas/user')(mongoose)
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // setup express and socket.io
 | 
	
		
			
				|  |  | -const app = express();
 | 
	
		
			
				|  |  | +const app = express(MongoDB);
 | 
	
		
			
				|  |  |  const server = app.listen(80);
 | 
	
		
			
				|  |  |  const io = require('socket.io')(server);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -// connect to our database before doing anything else
 | 
	
		
			
				|  |  | -r.connect( { host: 'localhost', port: 28015, db: 'musare' }, function(err, rc) {
 | 
	
		
			
				|  |  | -	if (err) {
 | 
	
		
			
				|  |  | -		console.log(err);
 | 
	
		
			
				|  |  | -	} else {
 | 
	
		
			
				|  |  | +global.io = io;
 | 
	
		
			
				|  |  | +global.db = db;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		global.rc = rc;
 | 
	
		
			
				|  |  | -		global.io = io;
 | 
	
		
			
				|  |  | +app.use(passport.initialize());
 | 
	
		
			
				|  |  | +app.use(passport.session());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        const store = new rethinkdbStore(r);
 | 
	
		
			
				|  |  | +app.use(session({
 | 
	
		
			
				|  |  | +    secret: config.get('secret'),
 | 
	
		
			
				|  |  | +    store: new mongoStore({ mongooseConnection: MongoDB }),
 | 
	
		
			
				|  |  | +    resave: true,
 | 
	
		
			
				|  |  | +    saveUninitialized: true
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        app.use(passport.initialize());
 | 
	
		
			
				|  |  | -        app.use(passport.session());
 | 
	
		
			
				|  |  | +io.use(passportSocketIo.authorize({
 | 
	
		
			
				|  |  | +  secret: config.get('secret'),
 | 
	
		
			
				|  |  | +  store: new mongoStore({ mongooseConnection: MongoDB })
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        app.use(session({
 | 
	
		
			
				|  |  | -          secret: config.get('secret'),
 | 
	
		
			
				|  |  | -          store,
 | 
	
		
			
				|  |  | -          resave: true,
 | 
	
		
			
				|  |  | -          saveUninitialized: true
 | 
	
		
			
				|  |  | -        }));
 | 
	
		
			
				|  |  | +passport.serializeUser(function(user, done) {
 | 
	
		
			
				|  |  | +    done(null, user);
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        io.use(passportSocketIo.authorize({
 | 
	
		
			
				|  |  | -          secret: config.get('secret'),
 | 
	
		
			
				|  |  | -          store: store,
 | 
	
		
			
				|  |  | -        }));
 | 
	
		
			
				|  |  | +passport.deserializeUser(function(user, done) {
 | 
	
		
			
				|  |  | +    done(null, user);
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        passport.serializeUser(function(user, done) {
 | 
	
		
			
				|  |  | -            done(null, user);
 | 
	
		
			
				|  |  | +passport.use('local-signup', new localStrategy (function(username, password, cb) {
 | 
	
		
			
				|  |  | +    process.nextTick(function() {
 | 
	
		
			
				|  |  | +        db.user.findOne({'username' : username }, function(err, user) {
 | 
	
		
			
				|  |  | +            if (err) return cb(err);
 | 
	
		
			
				|  |  | +            if (user) return cb(null, false);
 | 
	
		
			
				|  |  | +            else {
 | 
	
		
			
				|  |  | +                var newUser = new db.user({
 | 
	
		
			
				|  |  | +                    username: username
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +                newUser.save(function(err) {
 | 
	
		
			
				|  |  | +                    if (err) throw err;
 | 
	
		
			
				|  |  | +                    return cb(null, newUser);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +passport.use('local-login', new localStrategy (function(username, password, cb) {
 | 
	
		
			
				|  |  | +    process.nextTick(function() {
 | 
	
		
			
				|  |  | +        db.user.findOne({'username' : username }, function(err, user) {
 | 
	
		
			
				|  |  | +            if (err) return cb(err);
 | 
	
		
			
				|  |  | +            if (!user) return cb(null, false);
 | 
	
		
			
				|  |  | +            if (!user.services.token.password == password) return done(null, false);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        passport.deserializeUser(function(user, done) {
 | 
	
		
			
				|  |  | -            done(null, user);
 | 
	
		
			
				|  |  | +            return done(null, user);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        passport.use(new localStrategy(function(username, password, done) {
 | 
	
		
			
				|  |  | -            process.nextTick(function() {
 | 
	
		
			
				|  |  | -                r.table('users').filter({
 | 
	
		
			
				|  |  | -                    username: username
 | 
	
		
			
				|  |  | -                }).run(rc, function (err, cursor) {
 | 
	
		
			
				|  |  | -                    if (err) return done(err);
 | 
	
		
			
				|  |  | -                    cursor.toArray(function (err, result) {
 | 
	
		
			
				|  |  | -                        if (!result) return done(null, false);
 | 
	
		
			
				|  |  | -                        if (result.password != password) return done(null, false);
 | 
	
		
			
				|  |  | -                        return done(null, user);
 | 
	
		
			
				|  |  | -                    });
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -            });
 | 
	
		
			
				|  |  | -        }));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        app.use(bodyParser.json());
 | 
	
		
			
				|  |  | -        app.use(bodyParser.urlencoded({
 | 
	
		
			
				|  |  | -            extended: true
 | 
	
		
			
				|  |  | -        }));
 | 
	
		
			
				|  |  | +app.use(bodyParser.json());
 | 
	
		
			
				|  |  | +app.use(bodyParser.urlencoded({
 | 
	
		
			
				|  |  | +    extended: true
 | 
	
		
			
				|  |  | +}));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		app.use(express.static(__dirname + '/../public'));
 | 
	
		
			
				|  |  | +app.use(express.static(__dirname + '/../public'));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		socketHandler(coreHandler, io);
 | 
	
		
			
				|  |  | -		expressHandler(coreHandler, app);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +socketHandler(coreHandler, io);
 | 
	
		
			
				|  |  | +expressHandler(coreHandler, app);
 |