|
@@ -1,9 +1,8 @@
|
|
-/*global require:true, __dirname:true */
|
|
|
|
|
|
+/********** depend **************/
|
|
|
|
|
|
var express = require('express');
|
|
var express = require('express');
|
|
var exphbs = require('express-handlebars');
|
|
var exphbs = require('express-handlebars');
|
|
var session = require('express-session');
|
|
var session = require('express-session');
|
|
-var expressValidator = require('express-validator');
|
|
|
|
var flash = require('express-flash');
|
|
var flash = require('express-flash');
|
|
var cookieParser = require('cookie-parser');
|
|
var cookieParser = require('cookie-parser');
|
|
var bodyParser = require('body-parser');
|
|
var bodyParser = require('body-parser');
|
|
@@ -13,12 +12,17 @@ var events = require('events');
|
|
var http = require('http');
|
|
var http = require('http');
|
|
var path = require('path');
|
|
var path = require('path');
|
|
var logger = require('morgan');
|
|
var logger = require('morgan');
|
|
-var lusca = require('lusca');
|
|
|
|
-var methodOverride = require('method-override');
|
|
|
|
|
|
+
|
|
var _ = require('lodash');
|
|
var _ = require('lodash');
|
|
var mongoose = require('mongoose');
|
|
var mongoose = require('mongoose');
|
|
var MongoStore = require('connect-mongo')(session);
|
|
var MongoStore = require('connect-mongo')(session);
|
|
|
|
+var methodOverride = require('method-override');
|
|
var passport = require('passport');
|
|
var passport = require('passport');
|
|
|
|
+var lusca = require('lusca');
|
|
|
|
+var expressValidator = require('express-validator');
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/********** config **************/
|
|
|
|
|
|
var app = express();
|
|
var app = express();
|
|
|
|
|
|
@@ -29,22 +33,18 @@ var config = {
|
|
var secure = require('./config/secure');
|
|
var secure = require('./config/secure');
|
|
var passportConf = require('./config/passport');
|
|
var passportConf = require('./config/passport');
|
|
|
|
|
|
|
|
+
|
|
|
|
+/********** MongoDB **************/
|
|
|
|
+
|
|
mongoose.connect(secure.db);
|
|
mongoose.connect(secure.db);
|
|
mongoose.connection.on('error', function() {
|
|
mongoose.connection.on('error', function() {
|
|
console.log('MongoDB Connection Error!');
|
|
console.log('MongoDB Connection Error!');
|
|
process.exit(1);
|
|
process.exit(1);
|
|
});
|
|
});
|
|
|
|
|
|
-var homeController = require('./controllers/home');
|
|
|
|
-var userController = require('./controllers/user');
|
|
|
|
|
|
|
|
-app.use(errorHandler());
|
|
|
|
-app.use(bodyParser.json());
|
|
|
|
-app.use(bodyParser.urlencoded({ extended: false }));
|
|
|
|
-app.use(cookieParser());
|
|
|
|
|
|
|
|
-app.use(express.static(path.join(__dirname, 'app')));
|
|
|
|
-app.use(favicon(path.join(__dirname, 'app/img', 'favicon.ico')));
|
|
|
|
|
|
+/********** app.engine **************/
|
|
|
|
|
|
app.engine('.hbs', exphbs({
|
|
app.engine('.hbs', exphbs({
|
|
defaultLayout: 'main',
|
|
defaultLayout: 'main',
|
|
@@ -55,15 +55,72 @@ app.engine('.hbs', exphbs({
|
|
app.set('view engine', '.hbs');
|
|
app.set('view engine', '.hbs');
|
|
app.set('views', path.join(__dirname, 'app/views'));
|
|
app.set('views', path.join(__dirname, 'app/views'));
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/********** app.use **************/
|
|
|
|
+
|
|
|
|
+app.use(express.static(path.join(__dirname, 'app'), { maxAge: 31557600000 }));
|
|
|
|
+app.use(favicon(path.join(__dirname, 'app/img', 'favicon.png')));
|
|
|
|
+app.use(bodyParser.json());
|
|
|
|
+app.use(bodyParser.urlencoded({ extended: true }));
|
|
|
|
+app.use(expressValidator());
|
|
|
|
+app.use(methodOverride());
|
|
|
|
+app.use(cookieParser());
|
|
|
|
+app.use(session({
|
|
|
|
+ resave: true,
|
|
|
|
+ saveUninitialized: true,
|
|
|
|
+ secret: secure.sessionSecret,
|
|
|
|
+ store: new MongoStore({ url: secure.db, autoReconnect: true })
|
|
|
|
+}));
|
|
|
|
+app.use(passport.initialize());
|
|
|
|
+app.use(passport.session());
|
|
|
|
+app.use(flash());
|
|
|
|
+app.use(lusca({
|
|
|
|
+ csrf: true,
|
|
|
|
+ xframe: 'SAMEORIGIN',
|
|
|
|
+ xssProtection: true
|
|
|
|
+}));
|
|
|
|
+app.use(function(req, res, next) {
|
|
|
|
+ res.locals.user = req.user;
|
|
|
|
+ next();
|
|
|
|
+});
|
|
|
|
+app.use(function(req, res, next) {
|
|
|
|
+ if (/api/i.test(req.path)) {
|
|
|
|
+ req.session.returnTo = req.path;
|
|
|
|
+ }
|
|
|
|
+ next();
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/********** app controllers **************/
|
|
|
|
+
|
|
|
|
+var homeController = require('./controllers/home');
|
|
|
|
+var userController = require('./controllers/user');
|
|
|
|
+
|
|
app.get('/', homeController.index);
|
|
app.get('/', homeController.index);
|
|
app.get('/login', userController.getLogin);
|
|
app.get('/login', userController.getLogin);
|
|
|
|
+//app.post('/login', userController.postLogin);
|
|
|
|
+app.get('/register', userController.getSignup);
|
|
|
|
+app.post('/register', userController.postSignup);
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
+/************* log **************/
|
|
|
|
+
|
|
var logger = new events.EventEmitter();
|
|
var logger = new events.EventEmitter();
|
|
logger.on('newEvent', function(event, data) {
|
|
logger.on('newEvent', function(event, data) {
|
|
console.log('%s: %s', event, JSON.stringify(data));
|
|
console.log('%s: %s', event, JSON.stringify(data));
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+
|
|
|
|
+/************* errors **************/
|
|
|
|
+
|
|
|
|
+app.use(errorHandler());
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/********** app.listen **************/
|
|
|
|
+
|
|
app.listen(conf.port), function() {
|
|
app.listen(conf.port), function() {
|
|
console.log('listening on port %d in %s mode', app.get('port'), app.get('env'));
|
|
console.log('listening on port %d in %s mode', app.get('port'), app.get('env'));
|
|
}
|
|
}
|