-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
64 lines (55 loc) · 2 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// load environment variables from .env with dotenv
import dotenv from 'dotenv';
dotenv.load();
import React from 'react';
import ReactDOM from 'react-dom/server';
import mongoose from 'mongoose';
import {server as Cerebellum} from 'cerebellum';
import CerebellumReact from 'cerebellum-react'
import compress from 'compression';
import passport from 'passport';
import cookieParser from 'cookie-parser';
import bodyParser from 'body-parser';
import session from 'express-session';
import ConnectMongo from 'connect-mongo';
import options from './options';
import UrlsAPI from './api';
import AuthenticationFactory from './authentication';
import request from 'request';
// connect to our database
const MongoStore = ConnectMongo(session);
const mongoAuth = process.env.MONGO_USER ? process.env.MONGO_USER+":"+process.env.MONGO_PASS+"@" : "";
mongoose.connect("mongodb://"+mongoAuth+process.env.MONGO_HOST+":"+process.env.MONGO_PORT+"/"+process.env.MONGO_DBNAME);
options.middleware = [
compress(),
cookieParser(process.env.COOKIE_SECRET),
bodyParser.json(),
bodyParser.urlencoded({extended: true}),
session({
secret: process.env.COOKIE_SECRET,
store: new MongoStore({
mongooseConnection: mongoose.connection,
collection: "sessions"
}),
saveUninitialized: true,
resave: true
}),
passport.initialize(),
passport.session()
];
// cerebellum-react specific options
const Layout = React.createFactory(require('./components/layout.jsx'));
options.prependTitle = "urls - ";
options.containerComponent = (store, children, props) => {
return Layout({ store, children });
};
const app = CerebellumReact(Cerebellum, React, ReactDOM, options);
// load API routes
app.use( "/api", UrlsAPI );
// load authentication routes
app.use( "/", AuthenticationFactory(passport) );
// always register static files middleware after defining routes
app.useStatic();
app.listen(Number(process.env.PORT || 4000), function() {
console.log(`urls development server listening on port ${this.address().port}`);
});