En effet, on ne sait pas à l'avance si l'utilisateur a déjà un accès validé à ce producteur (code déjà rentré, compte créé manuellement par le producteur)refactoring
public $rememberMe = true; | public $rememberMe = true; | ||||
public $email; | public $email; | ||||
private $_user = false; | private $_user = false; | ||||
public $code ; | |||||
public $id_producer ; | public $id_producer ; | ||||
/** | /** | ||||
['rememberMe', 'boolean'], | ['rememberMe', 'boolean'], | ||||
// password is validated by validatePassword() | // password is validated by validatePassword() | ||||
['password', 'validatePassword'], | ['password', 'validatePassword'], | ||||
['code', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) { | |||||
$producer = Producer::findOne($this->id_producer); | |||||
if ($producer) { | |||||
return strlen($producer->code); | |||||
} else { | |||||
return false; | |||||
} | |||||
}], | |||||
['code', function($attribute, $params) { | |||||
$code = $this->$attribute; | |||||
$producer = Producer::findOne($this->id_producer); | |||||
if ($producer && strtolower(trim($code)) != strtolower(trim($producer->code))) { | |||||
$this->addError($attribute, 'Code incorrect'); | |||||
} | |||||
}], | |||||
['id_producer', 'integer'], | ['id_producer', 'integer'], | ||||
['id_producer', function($attribute, $params) { | ['id_producer', function($attribute, $params) { | ||||
if ($this->id_producer) { | if ($this->id_producer) { |
if (Yii::$app->user->isGuest) { | if (Yii::$app->user->isGuest) { | ||||
if ($loginForm->load(Yii::$app->request->post()) && $loginForm->login()) { | if ($loginForm->load(Yii::$app->request->post()) && $loginForm->login()) { | ||||
Producer::addUser(User::getCurrentId(), $id) ; | |||||
if(!strlen($producer->code)) { | |||||
Producer::addUser(User::getCurrentId(), $id) ; | |||||
} | |||||
$this->redirect($returnUrl); | $this->redirect($returnUrl); | ||||
} | } | ||||
<p> | <p> | ||||
Si vous avez oublié votre mot de passe, vous pouvez le <?= Html::a('réinitialiser', ['site/request-password-reset']) ?>. | Si vous avez oublié votre mot de passe, vous pouvez le <?= Html::a('réinitialiser', ['site/request-password-reset']) ?>. | ||||
</p> | </p> | ||||
<?php if(strlen($producer->code)): ?> | |||||
<?= $form->field($loginForm, 'code',[ | |||||
'inputTemplate' => '<div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>{input}</div>', | |||||
]) | |||||
->label('Code du producteur') | |||||
->hint('Renseignez-vous auprès de votre producteur pour qu\'il vous fournisse le code d\'accès') ; ?> | |||||
<?php endif; ?> | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<?= Html::submitButton('Connexion', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> | <?= Html::submitButton('Connexion', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> | ||||
</div> | </div> |