forked from simaya/simaya
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp.js
More file actions
136 lines (104 loc) · 3.6 KB
/
Copy pathapp.js
File metadata and controls
136 lines (104 loc) · 3.6 KB
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
133
134
135
/**
* Module dependencies.
*/
// var settingsFile = process.env.SIMAYASETTING ? process.env.SIMAYASETTING : 'settings.js';
process.env.SIMAYASETTING = 'settings.prod.js';
var settingsFile = process.env.SIMAYASETTING ? process.env.SIMAYASETTING : 'settings.js';
var settings = require('./' + settingsFile);
var package = require("./package.json");
var sinergisVar = {
version: package.version,
appName: 'siMAYA'
}
var os = require('os');
var express = require('express.io')
, app = express().http().io()
, cons = require('consolidate')
, http = require('http')
, moment = require('moment')
, passport = require('passport');
moment.locale("id")
app.use(function (req, res, next) {
req.proto = req.headers["x-forwarded-proto"]
if (req.proto == "http") {
res.redirect("https://" + req.host + req.originalUrl);
return;
}
req.secure = (req.proto == "https")
next();
});
app.sidebarSettings = __dirname + '/sidebar-settings.js';
app.db = function(modelName) {
return settings.model(settings.db, modelName);
}
var ioRoutes = require("./io")(app)
app.validator = settings.validator;
app.store = function(fileId, fileName, mode) {
return settings.store(settings.db, fileId, fileName, mode);
}
app.simaya = settings.simaya;
app.currentUser = {};
app.currentUserProfile = {};
app.currentUserRoles = {};
app.ObjectID = settings.ObjectID;
app.isWindows = os.platform().indexOf('win') > -1;
// set ref to settings.db from app
app.dbClient = settings.db;
app.dbClientOb = settings.dbOb;
app.configure('development', function(){
var MemStore = express.session.MemoryStore;
app.use(express.cookieParser(' default '));
app.use(express.session({secret:' default ', store: MemStore({
reapInterval: 60000 * 10
})
}));
app.use(express.errorHandler());
sinergisVar.version += '-devel';
});
// ugly hack, needs better suggestion on object wrapping
var oauth = require('./simaya/controller/oauth');
var auth = require('./simaya/controller/auth')(app);
// oauth2
var oauth2 = require('./simaya/controller/oauth2/oauth2')(app);
// azure push notification
var azuresettings = require('./azure-settings.js');
var corsHandler = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-token-next, X-token-key, Content-type");
res.header("Access-Control-Allow-Credentials", true);
next();
}
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.engine('html', cons.hogan);
app.set('view engine', 'html');
app.use(express.static(__dirname + '/static'));
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser({keepExtensions: true, uploadDir: __dirname + "/uploads" }))
app.use(express.methodOverride());
app.use(corsHandler);
app.use(express.limit('1gb'));
// passport for oauth2
app.use(passport.initialize());
// auth init
app.use(auth.authCheck())
// oauth init
app.use(oauth.provider.dispatch());
app.use(oauth.provider.oauth());
app.use(oauth.provider.filter());
app.use(app.router);
app.set('sinergisVar', sinergisVar);
});
// passport config
require('./simaya/controller/oauth2/auth')(app);
var routes = require('./routes')(app)
settings.db.open(function(){
// db.open() needs to be explicitly called in recent mongodb driver
console.log('database is ' + (settings.db.serverConfig.isConnected() ? 'connected' : 'not connected'))
console.log('database name: ', settings.db.databaseName)
app.listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
})