From 4369727cd60fac03cb1176b04da72abe91b2d8d7 Mon Sep 17 00:00:00 2001 From: Jason Williams Date: Thu, 21 May 2015 22:47:51 -0500 Subject: [PATCH] Handle password reset from signin page --- ghost/admin/app/controllers/application.js | 2 +- ghost/admin/app/controllers/forgotten.js | 47 --------------------- ghost/admin/app/controllers/signin.js | 29 +++++++++++-- ghost/admin/app/mixins/validation-engine.js | 2 - ghost/admin/app/router.js | 1 - ghost/admin/app/routes/forgotten.js | 11 ----- ghost/admin/app/templates/signin.hbs | 2 +- ghost/admin/app/validators/forgotten.js | 17 -------- 8 files changed, 27 insertions(+), 84 deletions(-) delete mode 100644 ghost/admin/app/controllers/forgotten.js delete mode 100644 ghost/admin/app/routes/forgotten.js delete mode 100644 ghost/admin/app/validators/forgotten.js diff --git a/ghost/admin/app/controllers/application.js b/ghost/admin/app/controllers/application.js index ed79c8db7d..0155e2de6d 100644 --- a/ghost/admin/app/controllers/application.js +++ b/ghost/admin/app/controllers/application.js @@ -1,7 +1,7 @@ import Ember from 'ember'; var ApplicationController = Ember.Controller.extend({ // jscs: disable - signedOut: Ember.computed.match('currentPath', /(signin|signup|setup|forgotten|reset)/), + signedOut: Ember.computed.match('currentPath', /(signin|signup|setup|reset)/), // jscs: enable topNotificationCount: 0, diff --git a/ghost/admin/app/controllers/forgotten.js b/ghost/admin/app/controllers/forgotten.js deleted file mode 100644 index f78f165637..0000000000 --- a/ghost/admin/app/controllers/forgotten.js +++ /dev/null @@ -1,47 +0,0 @@ -import Ember from 'ember'; -import ajax from 'ghost/utils/ajax'; -import ValidationEngine from 'ghost/mixins/validation-engine'; - -var ForgottenController = Ember.Controller.extend(ValidationEngine, { - email: '', - submitting: false, - - // ValidationEngine settings - validationType: 'forgotten', - - actions: { - submit: function () { - var data = this.getProperties('email'); - this.send('doForgotten', data, true); - }, - doForgotten: function (data, delay) { - var self = this; - this.set('email', data.email); - this.toggleProperty('submitting'); - this.validate({format: false}).then(function () { - ajax({ - url: self.get('ghostPaths.url').api('authentication', 'passwordreset'), - type: 'POST', - data: { - passwordreset: [{ - email: data.email - }] - } - }).then(function () { - self.toggleProperty('submitting'); - self.notifications.showSuccess('Please check your email for instructions.', {delayed: delay}); - self.set('email', ''); - self.transitionToRoute('signin'); - }).catch(function (resp) { - self.toggleProperty('submitting'); - self.notifications.showAPIError(resp, {defaultErrorText: 'There was a problem with the reset, please try again.'}); - }); - }).catch(function (errors) { - self.toggleProperty('submitting'); - self.notifications.showErrors(errors); - }); - } - } -}); - -export default ForgottenController; diff --git a/ghost/admin/app/controllers/signin.js b/ghost/admin/app/controllers/signin.js index 0cf94b49b2..902451e95a 100644 --- a/ghost/admin/app/controllers/signin.js +++ b/ghost/admin/app/controllers/signin.js @@ -1,12 +1,14 @@ import Ember from 'ember'; import ValidationEngine from 'ghost/mixins/validation-engine'; +import ajax from 'ghost/utils/ajax'; var SigninController = Ember.Controller.extend(SimpleAuth.AuthenticationControllerMixin, ValidationEngine, { authenticator: 'simple-auth-authenticator:oauth2-password-grant', - forgotten: Ember.inject.controller(), validationType: 'signin', + submitting: false, + actions: { authenticate: function () { var model = this.get('model'), @@ -35,11 +37,30 @@ var SigninController = Ember.Controller.extend(SimpleAuth.AuthenticationControll }, forgotten: function () { - if (this.get('model.identification')) { - return this.get('forgotten').send('doForgotten', {email: this.get('model.identification')}, false); + var email = this.get('model.identification'), + self = this; + + if (!email) { + return this.notifications.showError('Enter email address to reset password.'); } - this.transitionToRoute('forgotten'); + self.set('submitting', true); + + ajax({ + url: self.get('ghostPaths.url').api('authentication', 'passwordreset'), + type: 'POST', + data: { + passwordreset: [{ + email: email + }] + } + }).then(function () { + self.set('submitting', false); + self.notifications.showSuccess('Please check your email for instructions.'); + }).catch(function (resp) { + self.set('submitting', false); + self.notifications.showAPIError(resp, {defaultErrorText: 'There was a problem with the reset, please try again.'}); + }); } } }); diff --git a/ghost/admin/app/mixins/validation-engine.js b/ghost/admin/app/mixins/validation-engine.js index 2499d1f68c..37cd548471 100644 --- a/ghost/admin/app/mixins/validation-engine.js +++ b/ghost/admin/app/mixins/validation-engine.js @@ -7,7 +7,6 @@ import PostValidator from 'ghost/validators/post'; import SetupValidator from 'ghost/validators/setup'; import SignupValidator from 'ghost/validators/signup'; import SigninValidator from 'ghost/validators/signin'; -import ForgotValidator from 'ghost/validators/forgotten'; import SettingValidator from 'ghost/validators/setting'; import ResetValidator from 'ghost/validators/reset'; import UserValidator from 'ghost/validators/user'; @@ -74,7 +73,6 @@ var ValidationEngine = Ember.Mixin.create({ setup: SetupValidator, signup: SignupValidator, signin: SigninValidator, - forgotten: ForgotValidator, setting: SettingValidator, reset: ResetValidator, user: UserValidator, diff --git a/ghost/admin/app/router.js b/ghost/admin/app/router.js index 18adc09487..27b93e9d01 100644 --- a/ghost/admin/app/router.js +++ b/ghost/admin/app/router.js @@ -19,7 +19,6 @@ Router.map(function () { this.route('signin'); this.route('signout'); this.route('signup', {path: '/signup/:token'}); - this.route('forgotten'); this.route('reset', {path: '/reset/:token'}); this.resource('posts', {path: '/'}, function () { diff --git a/ghost/admin/app/routes/forgotten.js b/ghost/admin/app/routes/forgotten.js deleted file mode 100644 index b9388cf376..0000000000 --- a/ghost/admin/app/routes/forgotten.js +++ /dev/null @@ -1,11 +0,0 @@ -import Ember from 'ember'; -import styleBody from 'ghost/mixins/style-body'; -import loadingIndicator from 'ghost/mixins/loading-indicator'; - -var ForgottenRoute = Ember.Route.extend(styleBody, loadingIndicator, { - titleToken: 'Forgotten Password', - - classNames: ['ghost-forgotten'] -}); - -export default ForgottenRoute; diff --git a/ghost/admin/app/templates/signin.hbs b/ghost/admin/app/templates/signin.hbs index 9595d30362..26fe5fe357 100644 --- a/ghost/admin/app/templates/signin.hbs +++ b/ghost/admin/app/templates/signin.hbs @@ -10,7 +10,7 @@
{{input class="gh-input password" type="password" placeholder="Password" name="password" tabindex="2" value=model.password}} - +
diff --git a/ghost/admin/app/validators/forgotten.js b/ghost/admin/app/validators/forgotten.js deleted file mode 100644 index 0a88da2c92..0000000000 --- a/ghost/admin/app/validators/forgotten.js +++ /dev/null @@ -1,17 +0,0 @@ -import Ember from 'ember'; -var ForgotValidator = Ember.Object.create({ - check: function (model) { - var data = model.getProperties('email'), - validationErrors = []; - - if (!validator.isEmail(data.email)) { - validationErrors.push({ - message: 'Invalid email address' - }); - } - - return validationErrors; - } -}); - -export default ForgotValidator;