Skip to content
Snippets Groups Projects
Commit 01292c1e authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

Merge branch 'hotline#99121_compte_invite_recuperation_mot_de_passe_impossible' into 'hotline'

hotline #99121 fix "lost password" workflow when a user has registered and…

See merge request !3453
parents 0a1414b2 f36d6ccb
Branches
Tags
2 merge requests!3456Hotline,!3453hotline #99121 fix "lost password" workflow when a user has registered and…
Pipeline #9766 passed with stage
in 47 minutes and 5 seconds
- ticket #99121 : Correction de la fonction "mot de passe oublié" lorsqu'une personne s'enregistre, active son compte mais n'a pas encore été validé par un administrateur
\ No newline at end of file
......@@ -138,6 +138,11 @@ class Class_UsersNonValid extends Storm_Model_Abstract {
}
public function isNotActivated() {
return !$this->hasUser();
}
protected function _escalateRole() {
if (($bib = $this->getBib())
&& $bib->shouldEscalateRegistrationRole()){
......
......@@ -33,9 +33,9 @@ class ZendAfi_Validate_LostUsername extends Zend_Validate_Abstract {
$this->_messageTemplates =
[static::NO_USER => $this->_('Identifiant inconnu.'),
static::NO_MAIL => $this->_("Votre mail n'est pas renseigné dans votre compte lecteur. Merci de vous adresser à la bibliothèque pour récupérer votre mot de passe ou bien le remplacer par un nouveau."),
static::NO_MAIL => $this->_('Votre mail n\'est pas renseigné dans votre compte lecteur. Merci de vous adresser à la bibliothèque pour récupérer votre mot de passe ou bien le remplacer par un nouveau.'),
static::NO_ACTIVE_USER => $this->_("Votre compte n\'a pas encore été activé. Veuillez utiliser le lien d\'activation reçu précédemment par mail ou vous adresser à la bibliothèque si vous ne l\'avez pas reçu.")];
static::NO_ACTIVE_USER => $this->_('Votre compte n\'a pas encore été activé. Veuillez utiliser le lien d\'activation reçu précédemment par mail ou vous adresser à la bibliothèque si vous ne l\'avez pas reçu.')];
}
......@@ -47,7 +47,8 @@ class ZendAfi_Validate_LostUsername extends Zend_Validate_Abstract {
public function isValid($value, array $fields_values = array()) {
$value = ZendAfi_Filters_Post::filterStatic($value);
if ($user = Class_UsersNonValid::findFirstBy(['login' => $value])) {
if (($user = Class_UsersNonValid::findFirstBy(['login' => $value]))
&& $user->isNotActivated()) {
$this->_error(static::NO_ACTIVE_USER);
return false;
}
......
......@@ -96,7 +96,7 @@ class AuthControllerLostPasswordActionTest extends AuthControllerLostPasswordTes
class AuthControllerLostPasswordValidPostTest extends AuthControllerLostPasswordTestCase {
protected $_mail_transport, $_mail;
protected $_mail;
public function setUp() {
parent::setUp();
......@@ -151,6 +151,49 @@ class AuthControllerLostPasswordValidPostTest extends AuthControllerLostPassword
class AuthControllerLostPasswordValidPostWithUserNotValidatedYetTest extends AuthControllerLostPasswordTestCase {
protected $_mail;
public function setUp() {
parent::setUp();
$this->fixture('Class_Users',
['id' => 78,
'login' => 'toutnouveau',
'password' => 'secret',
'idabon' => '93658',
'mail' => 'toutnouveau@here.fr']);
$this->fixture('Class_UsersNonValid',
['id' => 1,
'login' => 'toutnouveau',
'password' => 'secret',
'bib_user_id' => 78]);
$this->postDispatch('/opac/auth/lostpass', ['lost_username' => 'toutnouveau']);
$this->_mail = $this->_mail_transport->sent_mail;
}
/** @test */
public function mailShouldContainsVousAvezFaitUneDemande() {
$this->assertContains('Vous avez fait une demande',
$this->_mail->getBodyText(true));
}
/** @test */
public function pageShouldContainsUnLienVientDeVousEtreEnvoye() {
$this->assertXPathContentContains('//p',
'Un mail vient de vous être envoyé contenant un lien de réinitialisation du mot de passe');
}
}
class AuthControllerLostPasswordUnknownPostTest extends AuthControllerLostPasswordTestCase {
/** @test */
public function withUnknowUserShouldDisplayError() {
......@@ -168,6 +211,19 @@ class AuthControllerLostPasswordUnknownPostTest extends AuthControllerLostPasswo
'Une valeur est requise',
$this->_response->getBody());
}
/** @test */
public function withUserNonValidShouldDisplayErrorAccountNotActivated() {
$this->fixture('Class_UsersNonValid',
['id' => 1,
'login' => 'toutnouveau',
'password' => 'secret']);
$this->postDispatch('/opac/auth/lostpass', ['lost_username' => 'toutnouveau']);
$this->assertXPathContentContains('//ul[@class="errors"]//li',
'Votre compte n\'a pas encore été activé',
$this->_response->getBody());
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment