Advertisement
Guest User

Untitled

a guest
Mar 31st, 2019
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. import express = require('express');
  2. import session = require('express-session');
  3. import path = require('path');
  4. import passport = require('passport');
  5. import { Strategy } from 'passport-local';
  6. import { MongoClient, Db, Collection } from 'mongodb';
  7. import bodyParser = require('body-parser');
  8. import bcrypt = require('bcryptjs');
  9. import cors = require('cors');
  10. import csurf = require('csurf');
  11.  
  12. import Routes from './routes/index';
  13. const env = require('../../env');
  14.  
  15. const app = express();
  16. const port = 3000;
  17.  
  18. MongoClient.connect(env.mongodbConnectionUri, {useNewUrlParser: true}, function(err: Error, client: MongoClient) {
  19. if (err) return console.error(err);
  20. let db: Db = client.db();
  21. app.use((req: any, res: any, next: Function) => {
  22. req.db = db;
  23. return next();
  24. });
  25. app.use(bodyParser.json()); // support json encoded bodies
  26. app.use(bodyParser.urlencoded({ extended: true }));
  27. app.use(cors());
  28. app.use(session({
  29. secret: 'some secret',
  30. saveUninitialized: true,
  31. resave: false,
  32. cookie: {
  33. secure: false
  34. }
  35. }));
  36. app.use(passport.initialize());
  37. app.use(passport.session());
  38. // Setup local strategy for passport authentication
  39. passport.use(new Strategy(
  40. { usernameField: 'email' },
  41. function (username: string, password: string, done: Function) {
  42. let users: Collection = db.collection('users');
  43. users.findOne({ email: username }).then((user) => {
  44. if (user === null || !bcrypt.compareSync(password, user.password)) {
  45. return done(null, false);
  46. }
  47. return done(null, {email: user.email});
  48. });
  49. }
  50. ));
  51. passport.serializeUser(function (user: any, done) {
  52. console.log('serializing', user);
  53. done(null, user);
  54. });
  55. passport.deserializeUser(function (user: any, done) {
  56. console.log('deserializing', user);
  57. let users: Collection = db.collection('users');
  58. users.findOne({email: user.email}).then((user) => {
  59. if (user === null)
  60. return done(new Error('No user found with email ' + user.email), null);
  61. return done(null, err);
  62. });
  63. });
  64. Routes(app);
  65.  
  66. // Serve static files from dist/public
  67. app.use(express.static(path.resolve(__dirname, '../../dist/public/')));
  68. // Display index.html if unknown path, and let React-Router handle the 404
  69. app.get('*', function (req: any, res: any) {
  70. res.sendFile(path.resolve(__dirname, '../../dist/public/index.html'));
  71. });
  72.  
  73. app.listen(port, () => console.log(`Listening on port ${port}!`));
  74. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement