From 8643620172574b70bf56b731d4f6815ea62df1c9 Mon Sep 17 00:00:00 2001 From: Neil Lalonde Date: Mon, 6 Feb 2017 15:04:47 -0500 Subject: [PATCH] automatically redirect when password reset completes successfully --- .../discourse/controllers/password-reset.js.es6 | 13 ++++++++++++- .../discourse/templates/password-reset.hbs | 4 +++- .../acceptance/password-reset-test.js.es6 | 1 - 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/password-reset.js.es6 b/app/assets/javascripts/discourse/controllers/password-reset.js.es6 index 7efa5db185c..34b911c23d3 100644 --- a/app/assets/javascripts/discourse/controllers/password-reset.js.es6 +++ b/app/assets/javascripts/discourse/controllers/password-reset.js.es6 @@ -1,5 +1,6 @@ import { default as computed } from 'ember-addons/ember-computed-decorators'; import getUrl from 'discourse-common/lib/get-url'; +import DiscourseURL from 'discourse/lib/url'; import { ajax } from 'discourse/lib/ajax'; import PasswordValidation from "discourse/mixins/password-validation"; @@ -9,12 +10,18 @@ export default Ember.Controller.extend(PasswordValidation, { errorMessage: null, successMessage: null, requiresApproval: false, + redirected: false, @computed() continueButtonText() { return I18n.t('password_reset.continue', {site_name: this.siteSettings.title}); }, + @computed('redirectTo') + redirectHref(redirectTo) { + return Discourse.getURL(redirectTo || '/'); + }, + lockImageUrl: getUrl('/images/lock.svg'), actions: { @@ -31,6 +38,9 @@ export default Ember.Controller.extend(PasswordValidation, { this.set('redirectTo', result.redirect_to); if (result.requires_approval) { this.set('requiresApproval', true); + } else { + this.set('redirected', true); + DiscourseURL.redirectTo(result.redirect_to || '/'); } } else { if (result.errors && result.errors.password && result.errors.password.length > 0) { @@ -47,7 +57,8 @@ export default Ember.Controller.extend(PasswordValidation, { }, done() { - window.location.pathname = this.get('redirectTo') || Discourse.getURL("/"); + this.set('redirected', true); + DiscourseURL.redirectTo(this.get('redirectTo') || '/'); } } }); diff --git a/app/assets/javascripts/discourse/templates/password-reset.hbs b/app/assets/javascripts/discourse/templates/password-reset.hbs index 987bfcd20c8..4425b905c83 100644 --- a/app/assets/javascripts/discourse/templates/password-reset.hbs +++ b/app/assets/javascripts/discourse/templates/password-reset.hbs @@ -10,7 +10,9 @@ {{#if requiresApproval}}

{{i18n 'login.not_approved'}}

{{else}} - {{continueButtonText}} + {{#unless redirected}} + {{continueButtonText}} + {{/unless}} {{/if}} {{else}}
diff --git a/test/javascripts/acceptance/password-reset-test.js.es6 b/test/javascripts/acceptance/password-reset-test.js.es6 index 49050de210d..8bfe33d512a 100644 --- a/test/javascripts/acceptance/password-reset-test.js.es6 +++ b/test/javascripts/acceptance/password-reset-test.js.es6 @@ -57,7 +57,6 @@ test("Password Reset Page", () => { click('.password-reset form button'); andThen(() => { ok(!exists(".password-reset form"), "form is gone"); - ok(exists(".password-reset .btn"), "button is shown"); }); });