|
@@ -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);
|