app.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. 'use strict';
  2. // nodejs modules
  3. const path = require('path'),
  4. fs = require('fs'),
  5. os = require('os');
  6. process.env.NODE_CONFIG_DIR = `${process.cwd()}/backend/config`;
  7. // npm modules
  8. const express = require('express'),
  9. session = require('express-session'),
  10. mongoose = require('mongoose'),
  11. MongoStore = require('connect-mongo')(session),
  12. bodyParser = require('body-parser'),
  13. config = require('config'),
  14. request = require('request'),
  15. passport = require('passport'),
  16. LocalStrategy = require('passport-local').Strategy,
  17. passportSocketIo = require("passport.socketio");
  18. // global module
  19. const global = require('./logic/global');
  20. // database
  21. const MongoDB = mongoose.connect('mongodb://localhost:27017/musare').connection;
  22. MongoDB.on('error', (err) => {
  23. console.log('Database error: ' + err.message);
  24. });
  25. MongoDB.once('open', () => {
  26. console.log('Connected to database');
  27. setupExpress();
  28. });
  29. // setup express and socket.io
  30. function setupExpress() {
  31. const app = express(MongoDB);
  32. const server = app.listen(80);
  33. global.io = require('socket.io')(server);
  34. // other custom modules
  35. const coreHandler = require('./logic/coreHandler'),
  36. socketHandler = require('./logic/socketHandler'),
  37. expressHandler = require('./logic/expressHandler');
  38. global.db = {
  39. user: require('./schemas/user')(mongoose),
  40. station: require('./schemas/station')(mongoose)
  41. };
  42. console.log("Test");
  43. const mongoStore = new MongoStore({'mongooseConnection': MongoDB});
  44. app.use(session({
  45. secret: config.get('secret'),
  46. key: 'connect.sid',
  47. store: mongoStore,
  48. resave: true,
  49. saveUninitialized: true
  50. }));
  51. global.io.use(passportSocketIo.authorize({
  52. cookieParser: require('cookie-parser'),
  53. key: 'connect.sid',
  54. secret: config.get('secret'),
  55. store: mongoStore,
  56. success: function (data, accept) {
  57. console.log('successful connection to socket.io');
  58. accept();
  59. },
  60. fail: function (data, message, error, accept) {
  61. console.log(message);
  62. if (error && message !== "Passport was not initialized")
  63. throw new Error(message);
  64. accept();
  65. }
  66. }));
  67. app.use(passport.initialize());
  68. app.use(passport.session());
  69. passport.serializeUser((user, done) => {
  70. done(null, user);
  71. });
  72. passport.deserializeUser((user, done) => {
  73. done(null, user);
  74. });
  75. passport.use(new LocalStrategy({usernameField: 'email'}, (email, password, done) => {
  76. console.log(email, password);
  77. process.nextTick(() => {
  78. console.log(email, password);
  79. global.db.user.findOne({"email.address": email}, (err, user) => {
  80. if (err) return done(err);
  81. if (!user) return done(null, false);
  82. //if (!user.services.token.password == password) return done(null, false);
  83. return done(null, user);
  84. });
  85. });
  86. }));
  87. app.use(bodyParser.json());
  88. app.use(bodyParser.urlencoded({
  89. extended: true
  90. }));
  91. app.use(express.static(__dirname + '/../frontend/build/'));
  92. socketHandler(coreHandler, global.io);
  93. expressHandler(coreHandler, app);
  94. }