Merge pull request #1778 from overleaf/hb-password-reset-sl

Handle users who haven't migrated better on password reset

GitOrigin-RevId: f123a6fe4a5a958f558e3cf34c3180e8fc96d159
This commit is contained in:
Timothée Alby 2019-05-16 09:23:57 +02:00 committed by sharelatex
parent c6c948e9f9
commit 276310bd23
3 changed files with 22 additions and 0 deletions

View file

@ -6,6 +6,7 @@ UserGetter = require("../User/UserGetter")
UserUpdater = require("../User/UserUpdater")
UserSessionsManager = require("../User/UserSessionsManager")
logger = require "logger-sharelatex"
Settings = require 'settings-sharelatex'
module.exports =
@ -31,6 +32,8 @@ module.exports =
res.send 200, {message: {text: req.i18n.translate("password_reset_email_sent")}}
else if status == 'secondary'
res.send 404, {message: req.i18n.translate("secondary_email_password_reset")}
else if status == 'sharelatex'
res.send 404, {message: "<a href=\"#{Settings.accountMerge.sharelatexHost}/user/password/reset\">#{req.i18n.translate("reset_from_sl")}</a>"}
else
res.send 404, {message: req.i18n.translate("cant_find_email")}

View file

@ -26,6 +26,8 @@ module.exports = PasswordResetHandler =
UserGetter.getUserByAnyEmail email, (err, user) ->
if !user
return callback(error, null)
else if !user.overleaf?.id?
return callback(error, 'sharelatex')
else
return callback(error, 'secondary')

View file

@ -127,9 +127,26 @@ describe "PasswordResetHandler", ->
it 'should return status == null', ->
@callback.calledWith(null, null).should.equal true
describe "when the user isn't on v2", ->
beforeEach ->
@V1Api.request = sinon.stub().yields(null, { statusCode: 404 }, {})
@UserGetter.getUserByAnyEmail.callsArgWith(1, null, @user)
@PasswordResetHandler.generateAndEmailResetToken @email, @callback
it 'should not set the password token data', ->
@OneTimeTokenHandler.getNewToken
.called.should.equal false
it 'should not send an email with the token', ->
@EmailHandler.sendEmail.called.should.equal false
it 'should return status == sharelatex', ->
@callback.calledWith(null, 'sharelatex').should.equal true
describe "when the email is a secondary email", ->
beforeEach ->
@V1Api.request = sinon.stub().yields(null, { statusCode: 404 }, {})
@user.overleaf = {id: 101}
@UserGetter.getUserByAnyEmail.callsArgWith(1, null, @user)
@PasswordResetHandler.generateAndEmailResetToken @email, @callback