SudoModeHandler.coffee 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. RedisWrapper = require('../../infrastructure/RedisWrapper')
  2. rclient = RedisWrapper.client('sudomode')
  3. logger = require('logger-sharelatex')
  4. TIMEOUT_IN_SECONDS = 60 * 60
  5. module.exports = SudoModeHandler =
  6. _buildKey: (userId) ->
  7. "SudoMode:{#{userId}}"
  8. activateSudoMode: (userId, callback=(err)->) ->
  9. if !userId?
  10. return callback(new Error('[SudoMode] user must be supplied'))
  11. duration = TIMEOUT_IN_SECONDS
  12. logger.log {userId, duration}, "[SudoMode] activating sudo mode for user"
  13. rclient.set SudoModeHandler._buildKey(userId), '1', 'EX', duration, callback
  14. clearSudoMode: (userId, callback=(err)->) ->
  15. if !userId?
  16. return callback(new Error('[SudoMode] user must be supplied'))
  17. logger.log {userId}, "[SudoMode] clearing sudo mode for user"
  18. rclient.del SudoModeHandler._buildKey(userId), callback
  19. isSudoModeActive: (userId, callback=(err, isActive)->) ->
  20. if !userId?
  21. return callback(new Error('[SudoMode] user must be supplied'))
  22. rclient.get SudoModeHandler._buildKey(userId), (err, result) ->
  23. if err?
  24. return callback(err)
  25. callback(null, result == '1')