overleaf/services/web/app/coffee/Features/PasswordReset/PasswordResetTokenHandler.coffee
2014-05-16 10:52:31 +01:00

30 lines
915 B
CoffeeScript

Settings = require('settings-sharelatex')
redis = require('redis')
rclient = redis.createClient(Settings.redis.web.port, Settings.redis.web.host)
rclient.auth(Settings.redis.web.password)
crypto = require("crypto")
logger = require("logger-sharelatex")
ONE_HOUR_IN_S = 60 * 60
buildKey = (token)-> return "password_token:#{token}"
module.exports =
getNewToken: (user_id, callback)->
logger.log user_id:user_id, "generating token for password reset"
token = crypto.randomBytes(32).toString("hex")
multi = rclient.multi()
multi.set buildKey(token), user_id
multi.expire buildKey(token), ONE_HOUR_IN_S
multi.exec (err)->
callback(err, token)
getUserIdFromTokenAndExpire: (token, callback)->
logger.log token:token, "getting user id from password token"
multi = rclient.multi()
multi.get buildKey(token)
multi.del buildKey(token)
multi.exec (err, results)->
callback err, results[0]