1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 'use strict'
- /* global appdata, rights */
- const moment = require('moment-timezone')
- /**
- * Authentication middleware
- *
- * @param {Express Request} req Express Request object
- * @param {Express Response} res Express Response object
- * @param {Function} next Next callback function
- * @return {any} void
- */
- module.exports = (req, res, next) => {
- // Is user authenticated ?
- if (!req.isAuthenticated()) {
- if (!appdata.capabilities.guest || req.app.locals.appconfig.public !== true) {
- return res.redirect('/login')
- } else {
- req.user = rights.guest
- res.locals.isGuest = true
- }
- } else if (appdata.capabilities.guest) {
- res.locals.isGuest = false
- }
- // Check permissions
- if (appdata.capabilities.rights) {
- res.locals.rights = rights.check(req)
- if (!res.locals.rights.read) {
- return res.render('error-forbidden')
- }
- }
- // Set i18n locale
- req.i18n.changeLanguage(req.user.lang)
- res.locals.userMoment = moment
- res.locals.userMoment.locale(req.user.lang)
- // Expose user data
- res.locals.user = req.user
- return next()
- }
|