From f7d6493a5eeef4444133488afbc47f9be25e53dc Mon Sep 17 00:00:00 2001 From: Leonardo Merlin Date: Thu, 26 Nov 2015 13:34:43 -0200 Subject: [PATCH] Add 'new-password' page --- src/app/components/auth/auth.service.js | 8 ++++---- src/app/index.route.js | 12 ++++++------ src/app/pages/auth/active.html | 77 +++++++++++++++++++++++++++++++++-------------------------------------------- src/app/pages/auth/auth.controller.js | 45 ++++++++++++++++++++++++--------------------- src/app/pages/auth/change.html | 71 ----------------------------------------------------------------------- src/app/pages/auth/new-password.html | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/pages/auth/newPassword.controller.js | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/app/pages/auth/recover.html | 4 +--- 8 files changed, 233 insertions(+), 149 deletions(-) delete mode 100644 src/app/pages/auth/change.html create mode 100644 src/app/pages/auth/new-password.html create mode 100644 src/app/pages/auth/newPassword.controller.js diff --git a/src/app/components/auth/auth.service.js b/src/app/components/auth/auth.service.js index 8778d99..8f17cd9 100644 --- a/src/app/components/auth/auth.service.js +++ b/src/app/components/auth/auth.service.js @@ -112,11 +112,11 @@ }); } - function changePassword (code, newPassword, newPasswordConfirmation){ + function changePassword (data){ var url = PATH.host + '/api/v1/new_password'; - var encodedData = 'code=' + code; - encodedData += '&password=' + newPassword; - encodedData += '&password_confirmation=' + newPasswordConfirmation; + var encodedData = 'code=' + data.code; + encodedData += '&password=' + data.newPassword; + encodedData += '&password_confirmation=' + data.newPasswordConfirmation; return $http .patch(url, encodedData) diff --git a/src/app/index.route.js b/src/app/index.route.js index 3ec21b6..8736a14 100644 --- a/src/app/index.route.js +++ b/src/app/index.route.js @@ -64,14 +64,14 @@ } } }) - .state('alterar', { - url: '/alterar', - ncyBreadcrumb: {label: 'Alterar'}, + .state('nova-senha', { + url: '/nova-senha/:token', + ncyBreadcrumb: {label: 'Nova senha'}, views: { 'main': { - templateUrl: 'app/pages/auth/change.html', - controller: 'AuthPageController', - controllerAs: 'pageAuth' + templateUrl: 'app/pages/auth/new-password.html', + controller: 'NewPasswordPageController', + controllerAs: 'pageNewPassword' } } }) diff --git a/src/app/pages/auth/active.html b/src/app/pages/auth/active.html index 2e5dbd8..d67bf2d 100644 --- a/src/app/pages/auth/active.html +++ b/src/app/pages/auth/active.html @@ -1,48 +1,37 @@ -
-
-
-

Ativar conta

-
-
-
-
-
-
-
-
- -
-

Aguarde...

-

Estamos ativando a sua conta ({{::pageActive.activation_code}}).

-
- -
- -
-
-

Entrar

+
+
+
+
+

Ativar conta

-
- -
- -
- +
+
+
+
+
+

Aguarde...

+

Estamos ativando a sua conta ({{::pageActive.activation_code}}).

+
+
+ +
+
+

Entrar

+
+
+
+ +
-
-
-
-
-
-
+ + \ No newline at end of file diff --git a/src/app/pages/auth/auth.controller.js b/src/app/pages/auth/auth.controller.js index 8db8bc3..5279198 100644 --- a/src/app/pages/auth/auth.controller.js +++ b/src/app/pages/auth/auth.controller.js @@ -132,10 +132,7 @@ AuthPageController.prototype.submitSignup = function($event, credentials) { var vm = this; - var target = $event.target; - var $target = angular.element(target); - var $captcha = $target.find('[name="txtToken_captcha_serpro_gov_br"]'); - credentials.txtToken_captcha_serpro_gov_br = $captcha.val(); + credentials.txtToken_captcha_serpro_gov_br = getCaptchaValFromEvent($event); vm.AuthService.register(credentials) .then(function(/*response*/) { @@ -204,25 +201,27 @@ AuthPageController.prototype.submitRecover = function($event, recoverForm) { var vm = this; + // init vars + vm.loadingSubmitRecover = true; + // get form data var data = { login: recoverForm.login.$modelValue, - captcha_text: recoverForm.captcha_text.$modelValue + captcha_text: recoverForm.captcha_text.$modelValue, + txtToken_captcha_serpro_gov_br: getCaptchaValFromEvent($event) }; - // get captcha token - var target = $event.target; - var $target = angular.element(target); - var $captcha = $target.find('[name="txtToken_captcha_serpro_gov_br"]'); - data.txtToken_captcha_serpro_gov_br = $captcha.val(); - - vm.AuthService.forgotPassword(data).then(function(response) { + var promiseRequest = vm.AuthService.forgotPassword(data); + + // SUCCES + promiseRequest.then(function(response) { vm.$log.debug('recover success.response', response); vm.recoverSuccess = true; - // vm._startRedirect(); + }); - }, function(response){ + // ERROR + promiseRequest.catch(function(response){ vm.$log.debug('recover error.response', response); vm.recoverError = true; @@ -239,8 +238,11 @@ if (response.status >= 500 && response.status < 600){ vm.internalError = true; } - }).catch(function(error){ - vm.$log.debug('recover catch.error', error); + }); + + // ALWAYS + promiseRequest.finally(function(){ + vm.loadingSubmitRecover = false; }); }; @@ -250,14 +252,11 @@ // get form data var data = { login: confirmationForm.login.$modelValue, - captcha_text: confirmationForm.captcha_text.$modelValue + captcha_text: confirmationForm.captcha_text.$modelValue, + txtToken_captcha_serpro_gov_br: getCaptchaValFromEvent($event) }; // get captcha token - var target = $event.target; - var $target = angular.element(target); - var $captcha = $target.find('[name="txtToken_captcha_serpro_gov_br"]'); - data.txtToken_captcha_serpro_gov_br = $captcha.val(); vm.AuthService.resendConfirmation(data) .then(function(response) { @@ -370,4 +369,8 @@ var url = 'http://login.dialoga.gov.br/plugin/oauth_client/google_oauth2?oauth_client_popup=true&id=' + vm.APP.google_app_id; vm.$window.oauthClientAction(url); }; + + function getCaptchaValFromEvent($event){ + return angular.element($event.target).find('[name="txtToken_captcha_serpro_gov_br"]').val(); + } })(); diff --git a/src/app/pages/auth/change.html b/src/app/pages/auth/change.html deleted file mode 100644 index 3b64d71..0000000 --- a/src/app/pages/auth/change.html +++ /dev/null @@ -1,71 +0,0 @@ -
-
-
-

Esqueci minha senha

-
Agora é só criar e confirmar sua nova senha.
-
-
-
-
-
-
-
-
-
-

Você está logado!

- -
-
-
-
-
-
-
-
-
-
-
-
- - - -
-
-
-
- - - -
-
-
-
-
- - A senha deve ter 6 ou mais caracteres e conter números e letras. - -
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/pages/auth/new-password.html b/src/app/pages/auth/new-password.html new file mode 100644 index 0000000..6c80399 --- /dev/null +++ b/src/app/pages/auth/new-password.html @@ -0,0 +1,83 @@ +
+
+
+
+

Cadastrar nova senha

+
Agora é só informar e confirmar sua nova senha.
+
+
+
+
+
+
+
+
+

Aguarde...

+

Estamos configurando a sua nova senha.

+
+
+
+
+ Feito! Sua senha foi configurada com sucesso. +
+
+
+
+ Erro! {{::pageNewPassword.submitNewPasswordErrorMessage}} +
+

Tente novamente ou entre em contato.

+
+
+ +
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+
+
+ As senhas estão diferentes. +
+
+
+
+
+ A senha deve ter 6 ou mais caracteres e conter números e letras. +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/auth/newPassword.controller.js b/src/app/pages/auth/newPassword.controller.js new file mode 100644 index 0000000..d2feec1 --- /dev/null +++ b/src/app/pages/auth/newPassword.controller.js @@ -0,0 +1,82 @@ +(function() { + 'use strict'; + + angular + .module('dialoga') + .controller('NewPasswordPageController', NewPasswordPageController); + + /** @ngInject */ + function NewPasswordPageController(AuthService, $state, $log) { + var vm = this; + + vm.AuthService = AuthService; + vm.$state = $state; + vm.$log = $log; + + vm.init(); + + vm.$log.debug('NewPasswordPageController'); + } + + NewPasswordPageController.prototype.init = function() { + var vm = this; + + // init variables + vm.loading = false; + vm.submitNewPasswordSuccess = false; + vm.submitNewPasswordError = false; + vm.token = vm.$state.params.token; + }; + + NewPasswordPageController.prototype.submitNewPassword = function($event, newPasswordForm) { + var vm = this; + + if(!newPasswordForm.$valid){ + vm.$log.warn('Form validation: fail.'); + return; + } + + // init vars + vm.loading = true; + vm.submitNewPasswordSuccess = false; + vm.submitNewPasswordError = false; + + // get form data + var data = { + code: newPasswordForm.code, + newPassword: newPasswordForm.newPassword.$modelValue, + newPasswordConfirmation: newPasswordForm.newPasswordConfirmation.$modelValue + }; + + // Create the promise request + var promiseRequest = vm.AuthService.changePassword(data); + + promiseRequest + .then(function(response) { + vm.$log.debug('new password success:', response); + + vm.submitNewPasswordSuccess = true; + }) + .catch(function(response){ + vm.$log.debug('new password error:', response); + + vm.submitNewPasswordError = true; + vm.submitNewPasswordErrorMessage = response.data.message || 'Não foi possível configurar nova senha.'; + + // Client Error + // if (response.status >= 400 && response.status < 500){ + // if(response.status === 404){ + // vm.submitNewPasswordErrorMessage = 'Não foi possível configurar nova senha.'; + // } + // } + + // Server Error + if (response.status >= 500 && response.status < 600){ + vm.internalError = true; + } + }) + .finally(function(){ + vm.loading = false; + }); + }; +})(); diff --git a/src/app/pages/auth/recover.html b/src/app/pages/auth/recover.html index b37e3d1..7b615cd 100644 --- a/src/app/pages/auth/recover.html +++ b/src/app/pages/auth/recover.html @@ -3,9 +3,7 @@

Esqueci minha senha

-
- Calma, podemos ajudar! Informe o seu e-mail que a gente envia um link de alteração. -
+
Calma, podemos ajudar! Informe o seu e-mail que a gente envia um link de alteração.
-- libgit2 0.21.2