-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
94 lines (75 loc) · 2.77 KB
/
server.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
(function() {
'use strict';
const world = require('forthright48/world');
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const errorhandler = require('errorhandler');
const app = express();
const server = require('http').createServer(app);
/*******************************************
Configuration
*******************************************/
/*App*/
app.set('port', process.env.PORT || 8080);
app.use('/public', express.static(path.join(__dirname, '/public')));
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({
extended: true
})); // support encoded bodies
/*Pug*/
app.set('view engine', 'pug'); ///Support for handlebars rendering
app.set('views', `${__dirname}/views`);
/*DB*/
require('./models/db.js').addSession(app);
/*Root Authentication*/
app.get('/admin/*', function(req, res, next) {
if (req && req.session) {
if (req.session.status === 'root') return next();
}
return world.handleError(req, res, 'Access Denied!');
});
/*Middleware to force Email Activation*/
app.get('/*', function(req, res, next) {
///Don't stop activation link
if (req.url.indexOf('/users/activate-account') === 0) return next();
if (req.url !== '/users/logout' && req.url !== '/users/send-activation-link' &&
req.url !== '/users/edit-profile' && req.url !== '/users/activate-account' &&
req.session.needActivation) return res.redirect('/users/activate-account');
return next();
});
/*Home*/
app.get('/', function(req, res) {
return world.myRender(req, res, 'home');
});
/*Problem Creation*/
require('./controllers/problem-creation/problem-creation.js').addRouter(app);
/*User and Admin*/
require('./controllers/users/login.js').addRouter(app);
require('./controllers/users/admin.js').addRouter(app);
require('./controllers/users/users.js').addRouter(app);
/*Gateway*/
require('./controllers/gateway/gateway.js').addRouter(app);
require('./controllers/gateway/doneStat.js').addRouter(app);
require('./controllers/gateway/stats.js').addRouter(app);
require('./controllers/gateway/search.js').addRouter(app);
require('./controllers/gateway/showAll.js').addRouter(app);
/*CPPS*/
require('./controllers/cpps/cpps.js').addRouter(app);
/*Misc*/
require('./controllers/misc/dbdesign').addRouter(app);
app.get('/*', function createError(req, res) {
return world.handleError(req, res, '404 Page Not Found');
});
app.use(errorhandler()); // Stack trace
if (require.main === module) {
server.listen(app.get('port'), function() {
console.log(`Server running at port ${ app.get('port') }`);
});
} else {
module.exports = {
server,
app
};
}
}());