SessionInvalidator.coffee 723 B

1234567891011121314151617181920212223242526
  1. Settings = require("settings-sharelatex")
  2. redis = require("redis-sharelatex")
  3. rclient = redis.createClient(Settings.redis.web)
  4. crypto = require("crypto")
  5. async = require("async")
  6. module.exports =
  7. _getEmailKey : (email)->
  8. hash = crypto.createHash("md5").update(email).digest("hex")
  9. return "e_sess:#{hash}"
  10. tracksession:(sessionId, email, callback = ->)->
  11. session_lookup_key = @_getEmailKey(email)
  12. rclient.set session_lookup_key, sessionId, callback
  13. invalidateSession:(email, callback = ->)->
  14. session_lookup_key = @_getEmailKey(email)
  15. rclient.get session_lookup_key, (err, sessionId)->
  16. async.series [
  17. (cb)-> rclient.del sessionId, cb
  18. (cb)-> rclient.del session_lookup_key, cb
  19. ], callback