2014-05-15 15:20:23 +00:00
|
|
|
settings = require("settings-sharelatex")
|
|
|
|
async = require("async")
|
|
|
|
UserGetter = require("../User/UserGetter")
|
2015-05-27 14:06:36 +00:00
|
|
|
OneTimeTokenHandler = require("../Security/OneTimeTokenHandler")
|
2014-05-15 15:20:23 +00:00
|
|
|
EmailHandler = require("../Email/EmailHandler")
|
|
|
|
AuthenticationManager = require("../Authentication/AuthenticationManager")
|
2014-05-15 17:08:21 +00:00
|
|
|
logger = require("logger-sharelatex")
|
2014-05-15 15:20:23 +00:00
|
|
|
|
|
|
|
module.exports =
|
|
|
|
|
2014-08-08 10:41:54 +00:00
|
|
|
generateAndEmailResetToken:(email, callback = (error, exists) ->)->
|
2014-05-15 15:50:38 +00:00
|
|
|
UserGetter.getUser email:email, (err, user)->
|
2014-05-15 15:20:23 +00:00
|
|
|
if err then return callback(err)
|
2015-04-14 12:11:49 +00:00
|
|
|
if !user? or user.holdingAccount
|
2014-05-15 17:08:21 +00:00
|
|
|
logger.err email:email, "user could not be found for password reset"
|
2014-08-08 10:41:54 +00:00
|
|
|
return callback(null, false)
|
2015-05-26 14:24:09 +00:00
|
|
|
OneTimeTokenHandler.getNewToken user._id, (err, token)->
|
2014-05-15 15:50:38 +00:00
|
|
|
if err then return callback(err)
|
|
|
|
emailOptions =
|
|
|
|
to : email
|
2015-04-30 10:59:44 +00:00
|
|
|
setNewPasswordUrl : "#{settings.siteUrl}/user/password/set?passwordResetToken=#{token}&email=#{encodeURIComponent(email)}"
|
2014-08-08 10:41:54 +00:00
|
|
|
EmailHandler.sendEmail "passwordResetRequested", emailOptions, (error) ->
|
|
|
|
return callback(error) if error?
|
|
|
|
callback null, true
|
2014-05-15 15:20:23 +00:00
|
|
|
|
2015-12-11 11:30:06 +00:00
|
|
|
setNewUserPassword: (token, password, callback = (error, found, user_id) ->)->
|
2015-05-26 14:24:09 +00:00
|
|
|
OneTimeTokenHandler.getValueFromTokenAndExpire token, (err, user_id)->
|
2014-05-15 15:20:23 +00:00
|
|
|
if err then return callback(err)
|
|
|
|
if !user_id?
|
2015-12-11 11:30:06 +00:00
|
|
|
return callback null, false, null
|
2014-10-08 16:18:24 +00:00
|
|
|
AuthenticationManager.setUserPassword user_id, password, (err) ->
|
|
|
|
if err then return callback(err)
|
2015-12-11 11:30:06 +00:00
|
|
|
callback null, true, user_id
|