summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--index.js4
-rw-r--r--package.json14
-rw-r--r--server/api/index.js2
-rw-r--r--server/auth/index.js2
-rw-r--r--server/index.js88
-rw-r--r--server/middleware.js46
-rw-r--r--server/models/index.js3
-rw-r--r--server/views/index.js5
8 files changed, 158 insertions, 6 deletions
diff --git a/index.js b/index.js
deleted file mode 100644
index 987f61c..0000000
--- a/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var app = require('./lib')
-
-app.init()
-
diff --git a/package.json b/package.json
index 38f1515..7ca5610 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "postgres-test",
"version": "0.0.0",
"description": "postgres/heroku testbed",
- "main": "index.js",
+ "main": "lib/index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
@@ -10,7 +10,17 @@
"license": "ISC",
"dependencies": {
"express": "~4.5.1",
+ "express-session": "~1.6.4",
+ "passport": "~0.2.0",
+ "csurf": "~1.3.0",
"lodash": "~2.4.1",
- "pg": "~3.3.0"
+ "pg": "~3.3.0",
+ "ejs": "^0.8.8",
+ "multer": "~0.1.0",
+ "body-parser": "~1.3.0",
+ "cookie-parser": "~1.3.2",
+ "method-override": "~2.1.0",
+ "errorhandler": "~1.1.1",
+ "morgan": "~1.1.1"
}
}
diff --git a/server/api/index.js b/server/api/index.js
new file mode 100644
index 0000000..3b02ec9
--- /dev/null
+++ b/server/api/index.js
@@ -0,0 +1,2 @@
+module.exports = {
+} \ No newline at end of file
diff --git a/server/auth/index.js b/server/auth/index.js
new file mode 100644
index 0000000..3b02ec9
--- /dev/null
+++ b/server/auth/index.js
@@ -0,0 +1,2 @@
+module.exports = {
+} \ No newline at end of file
diff --git a/server/index.js b/server/index.js
new file mode 100644
index 0000000..2f786ec
--- /dev/null
+++ b/server/index.js
@@ -0,0 +1,88 @@
+
+/* jshint node: true */
+var ejs = require('ejs');
+ejs.open = '[[';
+ejs.close = ']]';
+
+var config = require('../config.json'),
+ models = require('./models'),
+ api = require('./api'),
+ auth = require('./auth'),
+ middleware = require('./middleware'),
+ views = require('./views');
+
+var http = require('http'),
+ express = require('express'),
+ bodyParser = require('body-parser'),
+ cookieParser = require('cookie-parser'),
+ session = require('express-session'),
+ methodOverride = require('method-override'),
+ errorHandler = require('errorhandler'),
+ multer = require('multer'),
+ morgan = require('morgan'),
+ csurf = require('csurf'),
+ path = require('path'),
+ pg = require('pg');
+
+var app = express()
+var server
+var DATABASE_URI = process.env.DATABASE_URL || ('postgres://postgres@localhost/' + config.name)
+
+//
+
+var site = {}
+
+site.init = function(){
+ pg.connect(DATABASE_URI, site.ready);
+}
+
+site.ready = function(){
+ // auth.init()
+ site.setup()
+ site.route()
+}
+
+site.setup = function(){
+// var SessionStore = new MongoStore({ mongoose_connection: mongoose.connection })
+
+ app.set('port', config.port);
+ app.set('views', path.join(__dirname, '../views'));
+ app.set('view engine', 'ejs');
+ app.use(express.static(path.join(__dirname, '../public')));
+ app.use(morgan('dev'));
+ app.use(cookieParser(config.secret));
+ app.use(session({
+ key: config.name + '.sid',
+ secret: config.secret,
+ cookie: { domain: '.' + config.host, maxAge: 60*60*24*365 },
+// store: SessionStore
+ }));
+ app.use(bodyParser());
+ app.use(multer());
+ app.use(express.query());
+ app.use(csurf);
+ app.use(methodOverride());
+// app.use(passport.initialize());
+// app.use(passport.session());
+ app.enable('trust proxy')
+ app.get('env') === 'development' && app.use(errorHandler());
+
+ // Essential middleware
+ // app.all('*', middleware.enableCORS);
+ app.all('*', middleware.ensureLocals);
+
+ server = http.createServer(app)
+ server.listen(app.get('port'), function () {
+ console.log('Express server listening on port ' + app.get('port'));
+ });
+
+ // var io = websocket.listen(server)
+ // auth.initSockets(io, SessionStore)
+}
+
+site.route = function(){
+ app.get('/', views.home)
+}
+
+site.init()
+
diff --git a/server/middleware.js b/server/middleware.js
new file mode 100644
index 0000000..c13aecb
--- /dev/null
+++ b/server/middleware.js
@@ -0,0 +1,46 @@
+
+/* jshint node: true */
+
+var passport = require('passport'),
+ _ = require('lodash'),
+ config = require('../config.json');
+
+
+var middleware = {
+
+ enableCORS: function (req, res, next) {
+ res.header('Access-Control-Allow-Credentials', true);
+ // TODO Check https vs. http
+ res.header('Access-Control-Allow-Origin', '*');
+ res.header('Access-Control-Allow-Headers', 'X-Requested-With');
+ next();
+ },
+
+ ensureAuthenticated: function (req, res, next) {
+ if (! req.isAuthenticated()) {
+ req.session.returnTo = req.path;
+ return res.redirect('/login');
+ }
+ next();
+ },
+
+ ensureIsStaff: function (req, res, next) {
+ if (! req.user.isStaff) {
+ return res.redirect('http://' + config.host + '/');
+ }
+ next();
+ },
+
+ ensureLocals: function (req, res, next) {
+ res.locals.token = req.csrfToken();
+ res.locals.logged_in = req.isAuthenticated()
+ res.locals.user = req.user || {}
+ res.locals.config = config
+ res.locals.profile = null
+ res.locals.opt = {}
+ next()
+ },
+
+}
+
+module.exports = middleware
diff --git a/server/models/index.js b/server/models/index.js
new file mode 100644
index 0000000..7acaac2
--- /dev/null
+++ b/server/models/index.js
@@ -0,0 +1,3 @@
+module.exports = {
+
+}
diff --git a/server/views/index.js b/server/views/index.js
new file mode 100644
index 0000000..9997ccb
--- /dev/null
+++ b/server/views/index.js
@@ -0,0 +1,5 @@
+var views = module.exports = {}
+
+views.home = function(req,res){
+ res.render('index')
+}