You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
796 B

  1. 'use strict'
  2. const moment = require('moment-timezone')
  3. /**
  4. * Authentication middleware
  5. *
  6. * @param {Express Request} req Express Request object
  7. * @param {Express Response} res Express Response object
  8. * @param {Function} next Next callback function
  9. * @return {any} void
  10. */
  11. module.exports = (req, res, next) => {
  12. // Is user authenticated ?
  13. if (!req.isAuthenticated()) {
  14. return res.redirect('/login')
  15. }
  16. // Check permissions
  17. if (!rights.check(req, 'read')) {
  18. return res.render('error-forbidden')
  19. }
  20. // Set i18n locale
  21. req.i18n.changeLanguage(req.user.lang)
  22. res.locals.userMoment = moment
  23. res.locals.userMoment.locale(req.user.lang)
  24. // Expose user data
  25. res.locals.user = req.user
  26. return next()
  27. }