-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.js
61 lines (44 loc) · 1.66 KB
/
routes.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
var path = require('path'),
express = require('express'),
router = express.Router(),
controllers = require('./controllers'),
viewsFolder = path.resolve(__dirname, 'views');
module.exports = function(options) {
if(!options.models || !options.adminConfig) {
throw new Error('Properties `models` and `adminConfig` is required.');
}
Object.keys(controllers).forEach(function(key) {
controllers[key] = controllers[key](options);
});
// TODO: custom views
router.use('/public', express.static(path.resolve(__dirname, 'public')));
router.get('/logout', function(req, res) {
req.session.destroy(function() {
res.redirect('/');
});
});
router.get('/login', function(req, res) {
if(!req.session || !req.session.auth) {
return res.render(path.join(viewsFolder, 'admin/login'), {session: req.session});
}
res.redirect('/admin');
});
router.use('/', function(req, res, next) {
if(!req.session || !req.session.auth) {
return res.redirect('/admin/login');
} else {
next();
}
});
router.get('/', function(req, res) {
res.render(path.join(viewsFolder, 'admin/index'), {adminConfig: options.adminConfig});
});
router.get('/list/:collection', controllers.listCollection);
router.post('/sort/:collection', controllers.sortCollectionPost);
router.get('/sort/:collection', controllers.sortCollectionGet);
router.get('/edit/:collection/:id', controllers.editCollectionIdGet);
router.post('/edit/:collection/:id', controllers.editCollectionIdPost);
router.get('/delete/:collection/:id', controllers.deleteCollectionId);
router.post('/upload', controllers.upload);
return router;
};