2016-06-29 06:35:25 -04:00
|
|
|
Settings = require('settings-sharelatex')
|
|
|
|
redis = require('redis-sharelatex')
|
|
|
|
rclient = redis.createClient(Settings.redis.web)
|
|
|
|
logger = require("logger-sharelatex")
|
|
|
|
|
|
|
|
module.exports = UserSessionsManager =
|
|
|
|
|
|
|
|
_sessionSetKey: (user) ->
|
|
|
|
return "UserSessions:#{user._id}"
|
|
|
|
|
2016-06-29 10:12:12 -04:00
|
|
|
# mimic the key used by the express sessions
|
|
|
|
_sessionKey: (sessionId) ->
|
|
|
|
return "sess:#{sessionId}"
|
|
|
|
|
2016-06-29 06:35:25 -04:00
|
|
|
onLogin: (user, sessionId, callback=(err)-> ) ->
|
|
|
|
logger.log {user_id: user._id, sessionId}, "onLogin handler"
|
|
|
|
sessionSetKey = UserSessionsManager._sessionSetKey(user)
|
2016-06-29 10:12:12 -04:00
|
|
|
value = UserSessionsManager._sessionKey sessionId
|
|
|
|
rclient.sadd sessionSetKey, value, (err, response) ->
|
2016-06-29 06:35:25 -04:00
|
|
|
if err
|
|
|
|
logger.err {err, user_id: user._id, sessionId}, "error while adding session key to UserSessions set"
|
|
|
|
return callback(err)
|
|
|
|
callback()
|
|
|
|
|
|
|
|
onLogout: (user, sessionId, callback=(err)-> ) ->
|
|
|
|
logger.log {user_id: user._id, sessionId}, "onLogout handler"
|
|
|
|
if !user
|
|
|
|
logger.log {sessionId}, "no user, for some reason"
|
|
|
|
return callback()
|
|
|
|
sessionSetKey = UserSessionsManager._sessionSetKey(user)
|
2016-06-29 10:12:12 -04:00
|
|
|
value = UserSessionsManager._sessionKey sessionId
|
|
|
|
rclient.srem sessionSetKey, value, (err, response) ->
|
2016-06-29 06:35:25 -04:00
|
|
|
if err
|
|
|
|
logger.err {err, user_id: user._id, sessionId}, "error while removing session key from UserSessions set"
|
|
|
|
return callback(err)
|
|
|
|
callback()
|
2016-07-01 04:51:22 -04:00
|
|
|
|
|
|
|
revokeAllSessions: (user, callback=(err)->) ->
|
|
|
|
logger.log {user_id: user._id}, "revoking all existing sessions for user"
|
|
|
|
callback(null)
|