-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
81 lines (73 loc) · 2.59 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
(function() {
'use strict';
var env = process.env.NODE_ENV || 'development';
var config = require('./config/config.json')[env];
var app = require('connect')();
var swaggerTools = require('swagger-tools');
var jsyaml = require('js-yaml');
var fs = require('fs');
var cors = require('cors');
var models = require('./models');
var options = {
swaggerUi: '/swagger.json',
controllers: './controllers',
useStubs: env === 'development' ? true : false // Conditionally turn on stubs (mock mode)
};
var Locale = require('connect-locale');
var localeOptions = {
locales: config.locales,
getLocaleFrom: ['query', 'accept-language'],
storeLocaleTo: ['request']
};
app.use(cors()); //Allow Cross Origin Connections
var spec = fs.readFileSync('./api/swagger.yaml', 'utf8');
var swaggerDoc = jsyaml.safeLoad(spec);
// Initialize the Swagger middleware
swaggerTools.initializeMiddleware(swaggerDoc, function(middleware) {
app.use(function (req, res, next) {
if (['POST', 'PUT', 'DELETE'].indexOf(req.method) > -1) {
res.setHeader('content-type', 'application/json');
var token = req.headers['x-access-token'];
if (token) {
// See if we can find a valid user for this token.
var user = models.User;
user.model.findOne({token: token}, function(err, _user){
if (err){
next({
code: 402,
name: "AuthenticationError",
message: "No token provided"
});
} else {
req.user = _user;
next();
}
});
} else {
next({
code: 402,
name: "AuthenticationError",
message: "No token provided"
});
}
} else {
next();
}
});
app.use(middleware.swaggerMetadata());
app.use(middleware.swaggerValidator());
app.use(Locale(localeOptions));
app.use(middleware.swaggerRouter(options));
app.use(middleware.swaggerUi());
app.use(function onerror(err, req, res, next) {
//console.log(err.results.errors);
res.setHeader('content-type', 'application/json');
res.statusCode = 400;
if(err.code && err.code < 599 && err.code > 399){
res.statusCode = err.code;
}
res.end(JSON.stringify({"name": err.name, "message": err.message, "verbose": err}, null, 2));
});
});
module.exports = app;
}());