Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import express = require('express');
- import session = require('express-session');
- import path = require('path');
- import passport = require('passport');
- import { Strategy } from 'passport-local';
- import { MongoClient, Db, Collection } from 'mongodb';
- import bodyParser = require('body-parser');
- import bcrypt = require('bcryptjs');
- import cors = require('cors');
- import csurf = require('csurf');
- import Routes from './routes/index';
- const env = require('../../env');
- const app = express();
- const port = 3000;
- MongoClient.connect(env.mongodbConnectionUri, {useNewUrlParser: true}, function(err: Error, client: MongoClient) {
- if (err) return console.error(err);
- let db: Db = client.db();
- app.use((req: any, res: any, next: Function) => {
- req.db = db;
- return next();
- });
- app.use(bodyParser.json()); // support json encoded bodies
- app.use(bodyParser.urlencoded({ extended: true }));
- app.use(cors());
- app.use(session({
- secret: 'some secret',
- saveUninitialized: true,
- resave: false,
- cookie: {
- secure: false
- }
- }));
- app.use(passport.initialize());
- app.use(passport.session());
- // Setup local strategy for passport authentication
- passport.use(new Strategy(
- { usernameField: 'email' },
- function (username: string, password: string, done: Function) {
- let users: Collection = db.collection('users');
- users.findOne({ email: username }).then((user) => {
- if (user === null || !bcrypt.compareSync(password, user.password)) {
- return done(null, false);
- }
- return done(null, {email: user.email});
- });
- }
- ));
- passport.serializeUser(function (user: any, done) {
- console.log('serializing', user);
- done(null, user);
- });
- passport.deserializeUser(function (user: any, done) {
- console.log('deserializing', user);
- let users: Collection = db.collection('users');
- users.findOne({email: user.email}).then((user) => {
- if (user === null)
- return done(new Error('No user found with email ' + user.email), null);
- return done(null, err);
- });
- });
- Routes(app);
- // Serve static files from dist/public
- app.use(express.static(path.resolve(__dirname, '../../dist/public/')));
- // Display index.html if unknown path, and let React-Router handle the 404
- app.get('*', function (req: any, res: any) {
- res.sendFile(path.resolve(__dirname, '../../dist/public/index.html'));
- });
- app.listen(port, () => console.log(`Listening on port ${port}!`));
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement