Commit 4ff60ea5bd5c6fbd486be09164ac1eb70e60c932

Authored by Leonardo Merlin
2 parents 2f0bed5a 36286361

Merge branch 'fix-issues'

@@ -9,6 +9,9 @@ charset = utf-8 @@ -9,6 +9,9 @@ charset = utf-8
9 trim_trailing_whitespace = true 9 trim_trailing_whitespace = true
10 insert_final_newline = true 10 insert_final_newline = true
11 11
  12 +[*.html]
  13 +indent_size = 4
  14 +
12 [*.md] 15 [*.md]
13 trim_trailing_whitespace = false 16 trim_trailing_whitespace = false
14 17
src/app/components/auth/auth.service.js
@@ -112,11 +112,11 @@ @@ -112,11 +112,11 @@
112 }); 112 });
113 } 113 }
114 114
115 - function changePassword (code, newPassword, newPasswordConfirmation){ 115 + function changePassword (data){
116 var url = PATH.host + '/api/v1/new_password'; 116 var url = PATH.host + '/api/v1/new_password';
117 - var encodedData = 'code=' + code;  
118 - encodedData += '&password=' + newPassword;  
119 - encodedData += '&password_confirmation=' + newPasswordConfirmation; 117 + var encodedData = 'code=' + data.code;
  118 + encodedData += '&password=' + data.newPassword;
  119 + encodedData += '&password_confirmation=' + data.newPasswordConfirmation;
120 120
121 return $http 121 return $http
122 .patch(url, encodedData) 122 .patch(url, encodedData)
src/app/index.route.js
@@ -64,14 +64,14 @@ @@ -64,14 +64,14 @@
64 } 64 }
65 } 65 }
66 }) 66 })
67 - .state('alterar', {  
68 - url: '/alterar',  
69 - ncyBreadcrumb: {label: 'Alterar'}, 67 + .state('nova-senha', {
  68 + url: '/nova-senha/:token',
  69 + ncyBreadcrumb: {label: 'Nova senha'},
70 views: { 70 views: {
71 'main': { 71 'main': {
72 - templateUrl: 'app/pages/auth/change.html',  
73 - controller: 'AuthPageController',  
74 - controllerAs: 'pageAuth' 72 + templateUrl: 'app/pages/auth/new-password.html',
  73 + controller: 'NewPasswordPageController',
  74 + controllerAs: 'pageNewPassword'
75 } 75 }
76 } 76 }
77 }) 77 })
src/app/pages/auth/active.html
1 -<div class="container">  
2 - <div class="row">  
3 - <div class="col-sm-12">  
4 - <h2>Ativar conta</h2>  
5 - </div>  
6 - </div>  
7 -</div>  
8 -<section role="main" class="section-gray">  
9 - <div class="container">  
10 - <div class="row">  
11 - <br>  
12 - <div class="col-sm-8 col-sm-offset-2">  
13 -  
14 - <div ng-if="pageActive.loading">  
15 - <h3>Aguarde...</h3>  
16 - <p>Estamos ativando a sua conta ({{::pageActive.activation_code}}).</p>  
17 - </div>  
18 -  
19 - <div ng-if="pageActive.successMessageTitle">  
20 - <show-message  
21 - type="'success'"  
22 - message="pageActive.successMessageTitle"  
23 - description="pageActive.successMessageContent"  
24 - ></show-message>  
25 - <div class="row">  
26 - <div class="col-sm-8 col-sm-offset-4">  
27 - <p><a ui-sref="entrar" class="btn btn-default">Entrar</a></p> 1 +<div class="page--auth-active">
  2 + <div class="container">
  3 + <div class="row">
  4 + <div class="col-sm-12">
  5 + <h2>Ativar conta</h2>
28 </div> 6 </div>
29 - </div>  
30 </div> 7 </div>
31 -  
32 - <div ng-if="pageActive.errorMessageTitle">  
33 - <show-message  
34 - type="'error'"  
35 - message="pageActive.errorMessageTitle"  
36 - description="pageActive.errorMessageContent"  
37 - ></show-message>  
38 - <div class="row">  
39 - <div class="col-sm-8 col-sm-offset-4">  
40 - <p><a ui-sref="reenviar-email" class="btn btn-default">Re-enviar e-mail de confirmação</a></p> 8 + </div>
  9 + <section role="main" class="section-gray vertical-padding">
  10 + <div class="container">
  11 + <div class="row">
  12 + <div class="col-sm-8 col-sm-offset-2">
  13 + <div ng-if="pageActive.loading">
  14 + <h3>Aguarde...</h3>
  15 + <p>Estamos ativando a sua conta ({{::pageActive.activation_code}}).</p>
  16 + </div>
  17 + <div ng-if="pageActive.successMessageTitle">
  18 + <show-message type="'success'" message="pageActive.successMessageTitle" description="pageActive.successMessageContent"></show-message>
  19 + <div class="row">
  20 + <div class="col-sm-8 col-sm-offset-4">
  21 + <p><a ui-sref="entrar" class="btn btn-default">Entrar</a></p>
  22 + </div>
  23 + </div>
  24 + </div>
  25 + <div ng-if="pageActive.errorMessageTitle">
  26 + <show-message type="'error'" message="pageActive.errorMessageTitle" description="pageActive.errorMessageContent"></show-message>
  27 + <div class="row">
  28 + <div class="col-sm-8 col-sm-offset-4">
  29 + <p><a ui-sref="reenviar-email" class="btn btn-default">Re-enviar e-mail de confirmação</a></p>
  30 + </div>
  31 + </div>
  32 + </div>
  33 + </div>
41 </div> 34 </div>
42 - </div>  
43 </div> 35 </div>
44 - </div>  
45 - <br>  
46 - </div>  
47 - </div>  
48 -</section> 36 + </section>
  37 +</div>
49 \ No newline at end of file 38 \ No newline at end of file
src/app/pages/auth/auth.controller.js
@@ -132,10 +132,7 @@ @@ -132,10 +132,7 @@
132 AuthPageController.prototype.submitSignup = function($event, credentials) { 132 AuthPageController.prototype.submitSignup = function($event, credentials) {
133 var vm = this; 133 var vm = this;
134 134
135 - var target = $event.target;  
136 - var $target = angular.element(target);  
137 - var $captcha = $target.find('[name="txtToken_captcha_serpro_gov_br"]');  
138 - credentials.txtToken_captcha_serpro_gov_br = $captcha.val(); 135 + credentials.txtToken_captcha_serpro_gov_br = getCaptchaValFromEvent($event);
139 136
140 vm.AuthService.register(credentials) 137 vm.AuthService.register(credentials)
141 .then(function(/*response*/) { 138 .then(function(/*response*/) {
@@ -204,25 +201,27 @@ @@ -204,25 +201,27 @@
204 AuthPageController.prototype.submitRecover = function($event, recoverForm) { 201 AuthPageController.prototype.submitRecover = function($event, recoverForm) {
205 var vm = this; 202 var vm = this;
206 203
  204 + // init vars
  205 + vm.loadingSubmitRecover = true;
  206 +
207 // get form data 207 // get form data
208 var data = { 208 var data = {
209 login: recoverForm.login.$modelValue, 209 login: recoverForm.login.$modelValue,
210 - captcha_text: recoverForm.captcha_text.$modelValue 210 + captcha_text: recoverForm.captcha_text.$modelValue,
  211 + txtToken_captcha_serpro_gov_br: getCaptchaValFromEvent($event)
211 }; 212 };
212 213
213 - // get captcha token  
214 - var target = $event.target;  
215 - var $target = angular.element(target);  
216 - var $captcha = $target.find('[name="txtToken_captcha_serpro_gov_br"]');  
217 - data.txtToken_captcha_serpro_gov_br = $captcha.val();  
218 -  
219 - vm.AuthService.forgotPassword(data).then(function(response) { 214 + var promiseRequest = vm.AuthService.forgotPassword(data);
  215 +
  216 + // SUCCES
  217 + promiseRequest.then(function(response) {
220 vm.$log.debug('recover success.response', response); 218 vm.$log.debug('recover success.response', response);
221 219
222 vm.recoverSuccess = true; 220 vm.recoverSuccess = true;
223 - // vm._startRedirect(); 221 + });
224 222
225 - }, function(response){ 223 + // ERROR
  224 + promiseRequest.catch(function(response){
226 vm.$log.debug('recover error.response', response); 225 vm.$log.debug('recover error.response', response);
227 226
228 vm.recoverError = true; 227 vm.recoverError = true;
@@ -239,8 +238,11 @@ @@ -239,8 +238,11 @@
239 if (response.status >= 500 && response.status < 600){ 238 if (response.status >= 500 && response.status < 600){
240 vm.internalError = true; 239 vm.internalError = true;
241 } 240 }
242 - }).catch(function(error){  
243 - vm.$log.debug('recover catch.error', error); 241 + });
  242 +
  243 + // ALWAYS
  244 + promiseRequest.finally(function(){
  245 + vm.loadingSubmitRecover = false;
244 }); 246 });
245 }; 247 };
246 248
@@ -250,14 +252,11 @@ @@ -250,14 +252,11 @@
250 // get form data 252 // get form data
251 var data = { 253 var data = {
252 login: confirmationForm.login.$modelValue, 254 login: confirmationForm.login.$modelValue,
253 - captcha_text: confirmationForm.captcha_text.$modelValue 255 + captcha_text: confirmationForm.captcha_text.$modelValue,
  256 + txtToken_captcha_serpro_gov_br: getCaptchaValFromEvent($event)
254 }; 257 };
255 258
256 // get captcha token 259 // get captcha token
257 - var target = $event.target;  
258 - var $target = angular.element(target);  
259 - var $captcha = $target.find('[name="txtToken_captcha_serpro_gov_br"]');  
260 - data.txtToken_captcha_serpro_gov_br = $captcha.val();  
261 260
262 vm.AuthService.resendConfirmation(data) 261 vm.AuthService.resendConfirmation(data)
263 .then(function(response) { 262 .then(function(response) {
@@ -370,4 +369,8 @@ @@ -370,4 +369,8 @@
370 var url = 'http://login.dialoga.gov.br/plugin/oauth_client/google_oauth2?oauth_client_popup=true&id=' + vm.APP.google_app_id; 369 var url = 'http://login.dialoga.gov.br/plugin/oauth_client/google_oauth2?oauth_client_popup=true&id=' + vm.APP.google_app_id;
371 vm.$window.oauthClientAction(url); 370 vm.$window.oauthClientAction(url);
372 }; 371 };
  372 +
  373 + function getCaptchaValFromEvent($event){
  374 + return angular.element($event.target).find('[name="txtToken_captcha_serpro_gov_br"]').val();
  375 + }
373 })(); 376 })();
src/app/pages/auth/change.html
@@ -1,71 +0,0 @@ @@ -1,71 +0,0 @@
1 -<div class="container">  
2 - <div class="row">  
3 - <div class="col-sm-12">  
4 - <h2>Esqueci minha senha</h2>  
5 - <h5>Agora é só criar e confirmar sua nova senha.</h5>  
6 - </div>  
7 - </div>  
8 -</div>  
9 -<section role="main" class="section-gray">  
10 - <div class="container">  
11 - <div class="row">  
12 - <div ng-if="pageAuth.currentUser">  
13 - <div class="row">  
14 - <div class="col-sm-8 col-sm-offset-2">  
15 - <h3>Você está logado!</h3>  
16 - <button  
17 - type="button"  
18 - ng-click="pageAuth.onClickLogout()"  
19 - class="btn btn-primary">Sair</button>  
20 - </div>  
21 - </div>  
22 - </div>  
23 - <div ng-if="!pageAuth.currentUser">  
24 - <br>  
25 - <div class="col-sm-8 col-sm-offset-2">  
26 - <div class="row">  
27 - <div class="col-md-12">  
28 - <form name="changePassForm" ng-submit="">  
29 - <div class="row">  
30 - <div class="col-md-6">  
31 - <div class="form-group">  
32 - <label for="inputPassword">Senha*</label>  
33 - <input type="password" id="inputPassword" name="inputPassword" class="form-control input-lg" ng-class="{ 'has-error' : changePassForm.inputPassword.$invalid && changePassForm.inputPassword.$touched }" ng-model="password" required>  
34 - <validation-messages field="changePassForm.inputPassword"/>  
35 - </div>  
36 - </div>  
37 - <div class="col-md-6">  
38 - <div class="form-group">  
39 - <label for="inputRepeatPassword">Confirmar senha*</label>  
40 - <input  
41 - type="password" id="inputRepeatPassword" name="inputRepeatPassword" class="form-control input-lg" ng-class="{ 'has-error' : changePassForm.inputRepeatPassword.$invalid && changePassForm.inputRepeatPassword.$touched }" ng-model="repeatPassword" required>  
42 - <validation-messages field="changePassForm.inputRepeatPassword"/>  
43 - </div>  
44 - </div>  
45 - </div>  
46 - <div class="row">  
47 - <div class="col-sm-12">  
48 - <span>  
49 - A senha deve ter 6 ou mais caracteres e conter números e letras.  
50 - </span>  
51 - </div>  
52 - </div>  
53 - <br>  
54 - <div class="row">  
55 - <div class="col-md-6 col-sm-offset-3">  
56 - <div class="form-group">  
57 - <button  
58 - class="btn btn-lg btn-block btn-submit"  
59 - type="submit">Confirmar alteração de senha</button>  
60 - </div>  
61 - </div>  
62 - </div>  
63 - </form>  
64 - </div>  
65 - </div>  
66 - </div>  
67 - <br>  
68 - </div>  
69 - </div>  
70 - </div>  
71 -</section>  
src/app/pages/auth/new-password.html 0 → 100644
@@ -0,0 +1,83 @@ @@ -0,0 +1,83 @@
  1 +<div class="page--new-password">
  2 + <div class="container">
  3 + <div class="row">
  4 + <div class="col-sm-12">
  5 + <h2>Cadastrar nova senha</h2>
  6 + <h5>Agora é só informar e confirmar sua nova senha.</h5>
  7 + </div>
  8 + </div>
  9 + </div>
  10 + <section role="main" class="section-gray vertical-padding">
  11 + <div class="container">
  12 + <div class="row">
  13 + <div class="col-sm-8 col-sm-offset-2">
  14 + <div ng-if="pageNewPassword.loading">
  15 + <h3>Aguarde...</h3>
  16 + <p>Estamos configurando a sua nova senha.</p>
  17 + </div>
  18 + <div ng-if="!pageNewPassword.loading">
  19 + <div ng-if="pageNewPassword.submitNewPasswordSuccess">
  20 + <div class="alert alert-success">
  21 + <strong>Feito!</strong> Sua senha foi configurada com sucesso.
  22 + </div>
  23 + </div>
  24 + <div ng-if="pageNewPassword.submitNewPasswordError">
  25 + <div class="alert alert-danger">
  26 + <strong>Erro!</strong> {{::pageNewPassword.submitNewPasswordErrorMessage}}
  27 + </div>
  28 + <p>Tente novamente ou <a ui-sref="duvidas">entre em contato</a>.</p>
  29 + </div>
  30 + <form
  31 + novalidate
  32 + name="newPasswordForm"
  33 + ng-submit="newPasswordForm.$valid && pageNewPassword.submitNewPassword($event, newPasswordForm)">
  34 + <input type="hidden" name="code" value="{{::pageNewPassword.token}}" />
  35 + <div class="row">
  36 + <div class="col-md-6">
  37 + <div class="form-group">
  38 + <label for="newPassword">Senha*</label>
  39 + <input type="password" id="newPassword" name="newPassword" class="form-control input-lg" ng-class="{ 'has-error' : newPasswordForm.newPassword.$invalid && newPasswordForm.newPassword.$touched }" ng-minlength="6" ng-model="newPassword" required>
  40 + <validation-messages field="newPasswordForm.newPassword"></validation-messages>
  41 + </div>
  42 + </div>
  43 + <div class="col-md-6">
  44 + <div class="form-group">
  45 + <label for="newPasswordConfirmation">Confirmar senha*</label>
  46 + <input type="password" id="newPasswordConfirmation" name="newPasswordConfirmation" class="form-control input-lg" ng-class="{ 'has-error' : newPasswordForm.newPasswordConfirmation.$invalid && newPasswordForm.newPasswordConfirmation.$touched }" ng-minlength="6" ng-model="newPasswordConfirmation" required>
  47 + <validation-messages field="newPasswordForm.newPasswordConfirmation"></validation-messages>
  48 + </div>
  49 + </div>
  50 + </div>
  51 + <div class="row">
  52 + <div class="col-sm-12" ng-show="(newPasswordForm.newPassword.$viewValue.length > 0 && newPasswordForm.newPasswordConfirmation.$viewValue.length > 0) && (newPasswordForm.newPassword.$viewValue !== newPasswordForm.newPasswordConfirmation.$viewValue)">
  53 + <div class="error-message">
  54 + As senhas estão diferentes.
  55 + </div>
  56 + </div>
  57 + <div class="col-sm-12">
  58 + <div class="text" ng-show="newPasswordForm.newPassword.$viewValue.length > 0 && newPasswordForm.newPassword.$viewValue.length < 6">
  59 + <div class="error-message">
  60 + A senha deve ter 6 ou mais caracteres e conter números e letras.
  61 + </div>
  62 + </div>
  63 + </div>
  64 + </div>
  65 + <br>
  66 + <div class="row">
  67 + <div class="col-md-6 col-sm-offset-3">
  68 + <div class="form-group">
  69 + <button
  70 + class="btn btn-lg btn-block btn-submit"
  71 + type="submit"
  72 + ng-disabled="newPasswordForm.$invalid || ((newPasswordForm.newPassword.$viewValue.length > 0 && newPasswordForm.newPasswordConfirmation.$viewValue.length > 0) && (newPasswordForm.newPassword.$viewValue !== newPasswordForm.newPasswordConfirmation.$viewValue))"
  73 + >Confirmar alteração de senha</button>
  74 + </div>
  75 + </div>
  76 + </div>
  77 + </form>
  78 + </div>
  79 + </div>
  80 + </div>
  81 + </div>
  82 + </section>
  83 +</div>
src/app/pages/auth/newPassword.controller.js 0 → 100644
@@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
  1 +(function() {
  2 + 'use strict';
  3 +
  4 + angular
  5 + .module('dialoga')
  6 + .controller('NewPasswordPageController', NewPasswordPageController);
  7 +
  8 + /** @ngInject */
  9 + function NewPasswordPageController(AuthService, $state, $log) {
  10 + var vm = this;
  11 +
  12 + vm.AuthService = AuthService;
  13 + vm.$state = $state;
  14 + vm.$log = $log;
  15 +
  16 + vm.init();
  17 +
  18 + vm.$log.debug('NewPasswordPageController');
  19 + }
  20 +
  21 + NewPasswordPageController.prototype.init = function() {
  22 + var vm = this;
  23 +
  24 + // init variables
  25 + vm.loading = false;
  26 + vm.submitNewPasswordSuccess = false;
  27 + vm.submitNewPasswordError = false;
  28 + vm.token = vm.$state.params.token;
  29 + };
  30 +
  31 + NewPasswordPageController.prototype.submitNewPassword = function($event, newPasswordForm) {
  32 + var vm = this;
  33 +
  34 + if(!newPasswordForm.$valid){
  35 + vm.$log.warn('Form validation: fail.');
  36 + return;
  37 + }
  38 +
  39 + // init vars
  40 + vm.loading = true;
  41 + vm.submitNewPasswordSuccess = false;
  42 + vm.submitNewPasswordError = false;
  43 +
  44 + // get form data
  45 + var data = {
  46 + code: newPasswordForm.code,
  47 + newPassword: newPasswordForm.newPassword.$modelValue,
  48 + newPasswordConfirmation: newPasswordForm.newPasswordConfirmation.$modelValue
  49 + };
  50 +
  51 + // Create the promise request
  52 + var promiseRequest = vm.AuthService.changePassword(data);
  53 +
  54 + promiseRequest
  55 + .then(function(response) {
  56 + vm.$log.debug('new password success:', response);
  57 +
  58 + vm.submitNewPasswordSuccess = true;
  59 + })
  60 + .catch(function(response){
  61 + vm.$log.debug('new password error:', response);
  62 +
  63 + vm.submitNewPasswordError = true;
  64 + vm.submitNewPasswordErrorMessage = response.data.message || 'Não foi possível configurar nova senha.';
  65 +
  66 + // Client Error
  67 + // if (response.status >= 400 && response.status < 500){
  68 + // if(response.status === 404){
  69 + // vm.submitNewPasswordErrorMessage = 'Não foi possível configurar nova senha.';
  70 + // }
  71 + // }
  72 +
  73 + // Server Error
  74 + if (response.status >= 500 && response.status < 600){
  75 + vm.internalError = true;
  76 + }
  77 + })
  78 + .finally(function(){
  79 + vm.loading = false;
  80 + });
  81 + };
  82 +})();
src/app/pages/auth/recover.html
@@ -3,9 +3,7 @@ @@ -3,9 +3,7 @@
3 <div class="row"> 3 <div class="row">
4 <div class="col-sm-12"> 4 <div class="col-sm-12">
5 <h2>Esqueci minha senha</h2> 5 <h2>Esqueci minha senha</h2>
6 - <h5>  
7 - Calma, podemos ajudar! Informe o seu e-mail que a gente envia um link de alteração.  
8 - </h5> 6 + <h5>Calma, podemos ajudar! Informe o seu e-mail que a gente envia um link de alteração.</h5>
9 </div> 7 </div>
10 </div> 8 </div>
11 </div> 9 </div>