From 276310bd23d9dc0f9f7b0f8651c6168bb93e875f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timoth=C3=A9e=20Alby?= Date: Thu, 16 May 2019 09:23:57 +0200 Subject: [PATCH] Merge pull request #1778 from overleaf/hb-password-reset-sl Handle users who haven't migrated better on password reset GitOrigin-RevId: f123a6fe4a5a958f558e3cf34c3180e8fc96d159 --- .../PasswordResetController.coffee | 3 +++ .../PasswordReset/PasswordResetHandler.coffee | 2 ++ .../PasswordResetHandlerTests.coffee | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee b/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee index a6b32dd39e..d448a843cb 100644 --- a/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee +++ b/services/web/app/coffee/Features/PasswordReset/PasswordResetController.coffee @@ -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: "#{req.i18n.translate("reset_from_sl")}"} else res.send 404, {message: req.i18n.translate("cant_find_email")} diff --git a/services/web/app/coffee/Features/PasswordReset/PasswordResetHandler.coffee b/services/web/app/coffee/Features/PasswordReset/PasswordResetHandler.coffee index 6899f6b7e9..169482ed9b 100644 --- a/services/web/app/coffee/Features/PasswordReset/PasswordResetHandler.coffee +++ b/services/web/app/coffee/Features/PasswordReset/PasswordResetHandler.coffee @@ -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') diff --git a/services/web/test/unit/coffee/PasswordReset/PasswordResetHandlerTests.coffee b/services/web/test/unit/coffee/PasswordReset/PasswordResetHandlerTests.coffee index 1d90271d95..5c4fe4092b 100644 --- a/services/web/test/unit/coffee/PasswordReset/PasswordResetHandlerTests.coffee +++ b/services/web/test/unit/coffee/PasswordReset/PasswordResetHandlerTests.coffee @@ -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