Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
pirms 8 gadiem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace common\models;
  3. use Yii;
  4. use yii\base\Model;
  5. /**
  6. * Login form
  7. */
  8. class LoginForm extends Model {
  9. public $username;
  10. public $password;
  11. public $rememberMe = true;
  12. public $email;
  13. private $_user = false;
  14. public $code ;
  15. public $id_etablissement ;
  16. /**
  17. * @inheritdoc
  18. */
  19. public function rules() {
  20. return [
  21. ['email', 'filter', 'filter' => 'trim'],
  22. ['email', 'required', 'message' => 'Champs obligatoire'],
  23. ['email', 'email'],
  24. // username and password are both required
  25. [ 'password', 'required', 'message' => 'Champs obligatoire'],
  26. // rememberMe must be a boolean value
  27. ['rememberMe', 'boolean'],
  28. // password is validated by validatePassword()
  29. ['password', 'validatePassword'],
  30. ['code', 'required', 'message' => 'Champs obligatoire', 'when' => function($model) {
  31. $etablissement = Etablissement::findOne($this->id_etablissement);
  32. if ($etablissement) {
  33. return strlen($etablissement->code);
  34. } else {
  35. return false;
  36. }
  37. }],
  38. ['code', function($attribute, $params) {
  39. $code = $this->$attribute;
  40. $etablissement = Etablissement::findOne($this->id_etablissement);
  41. if ($etablissement && strtolower(trim($code)) != strtolower(trim($etablissement->code))) {
  42. $this->addError($attribute, 'Code incorrect');
  43. }
  44. }],
  45. ['id_etablissement', 'integer'],
  46. ['id_etablissement', function($attribute, $params) {
  47. if ($this->id_etablissement) {
  48. $etablissement = Etablissement::findOne($this->id_etablissement);
  49. if (!$etablissement) {
  50. $this->addError($attribute, 'Ce producteur n\'existe pas.');
  51. }
  52. }
  53. }],
  54. ];
  55. }
  56. /**
  57. * Validates the password.
  58. * This method serves as the inline validation for password.
  59. *
  60. * @param string $attribute the attribute currently being validated
  61. * @param array $params the additional name-value pairs given in the rule
  62. */
  63. public function validatePassword($attribute, $params) {
  64. if (!$this->hasErrors()) {
  65. $user = $this->getUser();
  66. if (!$user || !$user->validatePassword($this->password)) {
  67. $this->addError($attribute, 'Email ou mot de passe incorrect');
  68. }
  69. }
  70. }
  71. /**
  72. * Logs in a user using the provided username and password.
  73. *
  74. * @return boolean whether the user is logged in successfully
  75. */
  76. public function login() {
  77. if ($this->validate()) {
  78. $this->updateDerniereConnexion();
  79. return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
  80. } else {
  81. return false;
  82. }
  83. }
  84. /**
  85. * Finds user by [[username]]
  86. *
  87. * @return User|null
  88. */
  89. public function getUser() {
  90. if ($this->_user === false) {
  91. $this->_user = User::findByEmail($this->email);
  92. }
  93. return $this->_user;
  94. }
  95. public function attributeLabels() {
  96. return [
  97. 'id' => 'ID',
  98. 'username' => 'Identifiant',
  99. 'password' => 'Mot de passe',
  100. 'rememberMe' => 'Se souvenir de moi',
  101. 'email' => 'Email',
  102. ];
  103. }
  104. public function updateDerniereConnexion() {
  105. $user = $this->getUser();
  106. $user->date_derniere_connexion = date('Y-m-d H:i:s');
  107. $user->save();
  108. }
  109. }