SudoModeMiddleware.coffee 1.0 KB

12345678910111213141516171819202122232425
  1. logger = require 'logger-sharelatex'
  2. SudoModeHandler = require './SudoModeHandler'
  3. AuthenticationController = require '../Authentication/AuthenticationController'
  4. Settings = require 'settings-sharelatex'
  5. module.exports = SudoModeMiddleware =
  6. protectPage: (req, res, next) ->
  7. if req.externalAuthenticationSystemUsed() and !Settings.overleaf?
  8. logger.log {userId}, "[SudoMode] using external auth, skipping sudo-mode check"
  9. return next()
  10. userId = AuthenticationController.getLoggedInUserId(req)
  11. logger.log {userId}, "[SudoMode] protecting endpoint, checking if sudo mode is active"
  12. SudoModeHandler.isSudoModeActive userId, (err, isActive) ->
  13. if err?
  14. logger.err {err, userId}, "[SudoMode] error checking if sudo mode is active"
  15. return next(err)
  16. if isActive
  17. logger.log {userId}, "[SudoMode] sudo mode active, continuing"
  18. return next()
  19. else
  20. logger.log {userId}, "[SudoMode] sudo mode not active, redirecting"
  21. AuthenticationController.setRedirectInSession(req)
  22. return res.redirect('/confirm-password')