-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
106 lines (94 loc) · 2.51 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
95
96
97
98
99
100
101
102
103
104
105
106
'use strict'
const Hapi = require('hapi')
const Path = require('path')
const auth = require('./server/config/auth')
require('./server/users/user-db').db // without this the db is never connected (can be called from any module)
const goodOptions = require('./server/config/goodOptions')
const swagger_options = require('./server/config/swaggerOptions')
const server = new Hapi.Server({
debug: {
request: ['error']
},
connections: {
router: {
isCaseSensitive: true, // deffault
stripTrailingSlash: true // NOT deffault
}
}
})
server.connection({
port: auth.server.port,
host: auth.server.host
})
server.register(
[
require('hapi-auth-jwt2')
],
function (err) {
if (err) {
throw err // handle plugin startup error
}
}
)
server.auth.strategy.apply(null, auth.jws) // jws
// must register the auth strategy before using it in swagger
server.register(
[
require('vision'),
require('inert'),
require('nes'),
{ register: require('good'), goodOptions },
{ register: require('hapi-swagger'), options: swagger_options },
{ register: require('blipp'), options: { showAuth: true } },
{ register: require('hapijs-status-monitor') },
],
function (err) {
if (err) {
throw err // handle plugin startup error
}
}
)
server.views({
engines: { html: require('hapi-dust') },
relativeTo: Path.join(__dirname),
path: 'client/templates',
//partialsPath: 'client/templates',
// helpersPath: 'client/templates',
})
const routes = require('./server/routes/')
server.route(routes)
// WS Subscriptions
server.subscription('/item/{id}')
server.ext('onPreResponse', (request, reply) => {
if (request.response.isBoom) {
if (request.headers.accept) {
if (request.headers.accept.indexOf('application/json') === -1) {
const err = request.response
const errName = err.output.payload.error
const errMessage = err.output.payload.message
const statusCode = err.output.payload.statusCode
if (statusCode === 401) {
return reply.redirect('/')
}
return reply.view('error', {
statusCode: statusCode,
errName: errName,
errMessage:errMessage
}).code(statusCode)
}
}
}
reply.continue()
})
// Start the server
server.start((err) => {
if (err) {
console.log(err)
throw err
}
console.log('Server running at:', server.info.uri)
})
module.exports = {
//exports for websockets to work
server: server
}