/
routes.js
63 lines (50 loc) · 1.77 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
62
63
'use strict';
const _ = require('lodash');
const config = require('config');
const multer = require('multer');
const mkdirp = require('mkdirp');
const content = require('../content/middleware');
const users = require('../users/middleware');
module.exports = (app) => {
return new Promise(res => {
// temp file storage location
const dest = config.storage.temp.dest || 'public/tmp/';
// multer form handling setup
const upload = multer({
storage: multer.diskStorage({
destination: (req, file, cb) => {
cb(null, dest);
},
filename: (req, file, cb) => {
cb(null, `/${file.originalname}`);
},
}),
});
// creates temp storage location if it does not exist
mkdirp.sync(dest);
// creates final storage location when using file storage
if (config.storage.type === 'fs' && typeof config.storage.dest === 'string' && config.storage.dest !== '') {
mkdirp.sync(config.storage.dest);
}
// add all content types and flows to request object
app.use((req, response, next) => {
const request = req;
_.set(request, 'content.types', app.get('content-types'));
_.set(request, 'content.workflows', app.get('workflows'));
_.set(request, 'users.model', app.get('users-model'));
next();
});
// content type landing
app.use('/content/:type', content);
// save a piece of content
app.use('/content/:type/save', upload.any());
// piece of content actions
app.use('/content/:type/:id', content);
app.use('/content/:type/:id/:revision', content);
app.use('/content/:type/:id/:revision/edit', content);
app.use('/content/:type/:id/:revision/approve', content);
// individual user
app.use('/users/:id', users);
res(app);
});
};