mirror of
https://framagit.org/les/gancio.git
synced 2025-02-01 09:02:01 +01:00
52 lines
1.8 KiB
JavaScript
52 lines
1.8 KiB
JavaScript
const settingsController = require('./api/controller/settings')
|
|
const { user: User } = require('./api/models')
|
|
const acceptLanguage = require('accept-language')
|
|
const expressJwt = require('express-jwt')
|
|
const moment = require('moment-timezone')
|
|
const config = require('config')
|
|
const pkg = require('../package.json')
|
|
|
|
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()
|
|
// 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
|
|
req.settings.version = pkg.version
|
|
|
|
// set locale and user locale
|
|
const acceptedLanguages = req.headers['accept-language']
|
|
const supportedLanguages = ['en', 'it', 'es', 'ca']
|
|
acceptLanguage.languages(supportedLanguages)
|
|
req.settings.locale = acceptLanguage.get(acceptedLanguages)
|
|
req.settings.user_locale = settingsController.user_locale[req.settings.locale]
|
|
moment.locale(req.settings.locale)
|
|
|
|
// TODO: oauth
|
|
// auth
|
|
jwt(req, res, async () => {
|
|
if (!req.user) { return next() }
|
|
req.user = await User.findOne({
|
|
where: { id: req.user.id, is_active: true } })
|
|
next()
|
|
})
|
|
}
|
|
}
|