-
Notifications
You must be signed in to change notification settings - Fork 1
/
app.js
132 lines (114 loc) · 3.34 KB
/
app.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var expressValidator = require('express-validator');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var app = express();
var mongo = require('./config/database')[app.get('env')].mongo;
var _ = require('lodash');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(session({
secret: 'page_factory',
// 每次请求都刷新cookie过期时间
resave: true,
// 无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid
saveUninitialized: false,
cookie: {
secure: false, // https
maxAge: 1000 * 60 * 60 * 24 * 30 // 30 days
},
store: new MongoStore({
db: mongo.db.pageFactory,
host: mongo.host,
username: mongo.username,
password: mongo.password
})
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false, limit: '5mb'}));
app.use(expressValidator());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(function (req, res, next) {
var url = req.originalUrl, segments = url.split('?')[0].split('/'), user, isSuperAdmin;
res.locals.query = req.query;
res.locals.controllerName = segments[1];
res.locals.actionName = segments[2] || 'index';
if (url != '/' && url.indexOf("/authorize") == -1 && !req.session.user) {
return res.redirect("/authorize?next=" + encodeURIComponent(url));
} else {
user = req.session.user;
isSuperAdmin = user && user.roles.indexOf(1) == 0;
user = _.extend(user, {isSuperAdmin: isSuperAdmin});
res.locals.user = user;
}
next();
});
// routes
require('./routes')(app);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function (err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
// locals
app.locals.moment = require('moment');
app.locals.setting = require('./config/setting');
app.locals.ENVIRONMENT = {
dev: '开发环境',
test: '测试环境25',
pre: '预发布环境153',
prod: '正式环境48'
};
app.locals.PROJECT = {
act: '活动',
www: '主站',
m: 'H5'
};
app.locals.FILETYPE = {
html: 'HTML',
css: 'CSS',
js: 'JS'
};
app.locals.MODULETYPE = {
bundle: '商品包',
hota: '热点图',
banner: '通栏图',
text: '文字块',
slider: '轮播图'
};
app.locals.MODULETHEME = {
'1': '橙色小太阳',
'2': '粉色大矩形'
};
module.exports = app;