PasswordResetTokenHandler.coffee 915 B

123456789101112131415161718192021222324252627282930
  1. Settings = require('settings-sharelatex')
  2. redis = require('redis')
  3. rclient = redis.createClient(Settings.redis.web.port, Settings.redis.web.host)
  4. rclient.auth(Settings.redis.web.password)
  5. crypto = require("crypto")
  6. logger = require("logger-sharelatex")
  7. ONE_HOUR_IN_S = 60 * 60
  8. buildKey = (token)-> return "password_token:#{token}"
  9. module.exports =
  10. getNewToken: (user_id, callback)->
  11. logger.log user_id:user_id, "generating token for password reset"
  12. token = crypto.randomBytes(32).toString("hex")
  13. multi = rclient.multi()
  14. multi.set buildKey(token), user_id
  15. multi.expire buildKey(token), ONE_HOUR_IN_S
  16. multi.exec (err)->
  17. callback(err, token)
  18. getUserIdFromTokenAndExpire: (token, callback)->
  19. logger.log token:token, "getting user id from password token"
  20. multi = rclient.multi()
  21. multi.get buildKey(token)
  22. multi.del buildKey(token)
  23. multi.exec (err, results)->
  24. callback err, results[0]