diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/api/index.js | 2 | ||||
| -rw-r--r-- | server/auth/index.js | 2 | ||||
| -rw-r--r-- | server/index.js | 88 | ||||
| -rw-r--r-- | server/middleware.js | 46 | ||||
| -rw-r--r-- | server/models/index.js | 3 | ||||
| -rw-r--r-- | server/views/index.js | 5 |
6 files changed, 146 insertions, 0 deletions
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') +} |
