gancio-upstream/server/helpers.js

53 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-10-11 18:34:14 +02:00
const settingsController = require('./api/controller/settings')
2019-10-30 14:58:40 +01:00
const { user: User } = require('./api/models')
2019-10-11 18:34:14 +02:00
const acceptLanguage = require('accept-language')
const expressJwt = require('express-jwt')
2019-10-20 14:22:55 +02:00
const moment = require('moment-timezone')
2019-10-11 18:34:14 +02:00
const config = require('config')
2019-10-30 14:58:40 +01:00
const pkg = require('../package.json')
2019-10-11 18:34:14 +02:00
const jwt = expressJwt({
secret: config.secret,
credentialsRequired: false,
getToken: function fromHeaderOrQuerystring (req) {
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1]
} else if (req.cookies && req.cookies['auth._token.local']) {
const [ prefix, token ] = req.cookies['auth._token.local'].split(' ')
if (prefix === 'Bearer') { return token }
}
return null
}
})
module.exports = {
async initMiddleware (req, res, next) {
await settingsController.load()
2019-10-11 18:34:14 +02:00
// initialize settings
req.settings = settingsController.settings
req.secretSettings = settingsController.secretSettings
req.settings.baseurl = config.baseurl
req.settings.title = config.title
req.settings.description = config.description
2019-10-30 14:58:40 +01:00
req.settings.version = pkg.version
2019-10-11 18:34:14 +02:00
// set locale and user locale
const acceptedLanguages = req.headers['accept-language']
const supportedLanguages = ['en', 'it', 'es', 'ca']
2019-10-11 18:34:14 +02:00
acceptLanguage.languages(supportedLanguages)
req.settings.locale = acceptLanguage.get(acceptedLanguages)
req.settings.user_locale = settingsController.user_locale[req.settings.locale]
2019-10-20 14:22:55 +02:00
moment.locale(req.settings.locale)
2019-10-11 18:34:14 +02:00
2020-01-03 22:24:27 +01:00
// TODO: oauth
2019-10-11 18:34:14 +02:00
// auth
2019-10-30 14:58:40 +01:00
jwt(req, res, async () => {
if (!req.user) { return next() }
req.user = await User.findOne({
where: { id: req.user.id, is_active: true } })
2019-10-11 18:34:14 +02:00
next()
})
}
2019-10-30 14:58:40 +01:00
}