RedisWrapper = require('../../infrastructure/RedisWrapper')
rclient = RedisWrapper.client('sudomode')
logger = require('logger-sharelatex')


TIMEOUT_IN_SECONDS = 60 * 60


module.exports = SudoModeHandler =

	_buildKey: (userId) ->
		"SudoMode:{#{userId}}"

	activateSudoMode: (userId, callback=(err)->) ->
		if !userId?
			return callback(new Error('[SudoMode] user must be supplied'))
		duration = TIMEOUT_IN_SECONDS
		logger.log {userId, duration}, "[SudoMode] activating sudo mode for user"
		rclient.set SudoModeHandler._buildKey(userId), '1', 'EX', duration, callback

	clearSudoMode: (userId, callback=(err)->) ->
		if !userId?
			return callback(new Error('[SudoMode] user must be supplied'))
		logger.log {userId}, "[SudoMode] clearing sudo mode for user"
		rclient.del SudoModeHandler._buildKey(userId), callback

	isSudoModeActive: (userId, callback=(err, isActive)->) ->
		if !userId?
			return callback(new Error('[SudoMode] user must be supplied'))
		rclient.get SudoModeHandler._buildKey(userId), (err, result) ->
			if err?
				return callback(err)
			callback(null, result == '1')