From da7b2f360b38ba9d2c5200a1cbf01f3b84ae48f9 Mon Sep 17 00:00:00 2001 From: efalcy <efalcy@afi-sa.fr> Date: Wed, 22 Jul 2015 16:24:02 +0200 Subject: [PATCH] hotline $27816 : lost password : add error messages if user has no mail --- .../opac/controllers/AuthController.php | 11 +++-- library/Class/Users.php | 2 +- .../opac/controllers/AuthControllerTest.php | 42 +++++++++++++++++++ 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/application/modules/opac/controllers/AuthController.php b/application/modules/opac/controllers/AuthController.php index 1dd0bff075d..bd8e06845f7 100644 --- a/application/modules/opac/controllers/AuthController.php +++ b/application/modules/opac/controllers/AuthController.php @@ -20,6 +20,10 @@ */ class AuthController extends ZendAfi_Controller_Action { + protected $messages = [1 => 'Veuillez saisir votre identifiant.', + 2 => 'Identifiant inconnu.', + 4 => "Votre mail n'est pas renseigné dans votre compte lecteur. Merci de vous adresser à la bibliothèque pour connaître vos identifiants."]; + public function init() { $this->view->locale = Zend_Registry::get('locale'); } @@ -158,7 +162,7 @@ class AuthController extends ZendAfi_Controller_Action { $user = ZendAfi_Filters_Post::filterStatic($this->_request->getPost('username')); $classe_user = new Class_Users(); $ret = $classe_user->lostpass($user); - $this->view->message = $this->messages[$ret["error"]]; + $this->view->message = $this->view->_($this->messages[$ret["error"]]); $this->view->message_mail = $ret["message_mail"]; } $this->view->username=$user; @@ -179,8 +183,9 @@ class AuthController extends ZendAfi_Controller_Action { $user = ZendAfi_Filters_Post::filterStatic($this->_request->getPost('username')); $classe_user = new Class_Users(); $ret=$classe_user->lostpass($user); - $this->view->message=$this->messages[$ret["error"]]; - $this->view->message_mail=$ret["message_mail"]; + + $this->view->message=$this->view->_($this->messages[$ret["error"]]); + $this->view->message_mail=isset($ret["message_mail"])?$ret["message_mail"] : ''; $this->view->username=$user; } } diff --git a/library/Class/Users.php b/library/Class/Users.php index f5d80659fdf..f5dca6e7d9f 100644 --- a/library/Class/Users.php +++ b/library/Class/Users.php @@ -973,7 +973,7 @@ class Class_Users extends Storm_Model_Abstract { function lostpass($login) { if(!trim($login)) - return array('error' => 1); + return ['error' => 1]; if (!$user = Class_Users::getLoader()->findFirstBy(['login' => $login])) $user = Class_UsersNonValid::getLoader()->findFirstBy(['login' => $login]); diff --git a/tests/application/modules/opac/controllers/AuthControllerTest.php b/tests/application/modules/opac/controllers/AuthControllerTest.php index cb91e60df65..4d6b1be5512 100644 --- a/tests/application/modules/opac/controllers/AuthControllerTest.php +++ b/tests/application/modules/opac/controllers/AuthControllerTest.php @@ -1135,7 +1135,49 @@ class AuthControllerLoginActionWithDefaultPreferencesRenderTest extends AuthCont } } +class AuthControllerLostPasswordUnknownPostTest extends AbstractControllerTestCase{ + public function setUp() { + parent::setUp(); + + } + + /** @test */ + public function withUnknowUserShouldDisplayError() { + $this->postDispatch('/opac/auth/lostpass',['username' => 'unknown']); + $this->assertXPathContentContains('//div', 'Identifiant inconnu',$this->_response->getBody()); + } + + +/** @test */ + public function withEmptyUserShouldDisplayError() { + $this->postDispatch('/opac/auth/lostpass',['username' => '']); + $this->assertXPathContentContains('//div', 'Veuillez saisir votre identifiant.',$this->_response->getBody()); + } + +} + +class AuthControllerLostPasswordNoMailPostTest extends AbstractControllerTestCase{ + + public function setUp() { + parent::setUp(); + $user = $this->fixture('Class_Users', + ['id' => 1, + 'pseudo' => 'luddite', + 'login' => 'luddite', + 'password' => 'notech', + 'nom' => 'Lu', + 'prenom' => 'Dites']); + + $this->postDispatch('/opac/auth/lostpass' , ['username' => 'luddite']); + } + +/** @test */ + public function withoutEmailShouldReturnErrorMessage() { + $this->assertXPathContentContains('//div', "Votre mail n'est pas renseigné dans votre compte lecteur. Merci de vous adresser à la bibliothèque pour connaître vos identifiants."); + } + +} class AuthControllerLostPasswordTest extends AuthControllerNobodyLoggedTestCase { -- GitLab