0], [['no_mail','mail_prod_lundi','mail_prod_mardi','mail_prod_mercredi','mail_prod_jeudi','mail_prod_vendredi','mail_prod_samedi','mail_prod_dimanche'],'boolean'], [['nom','prenom','telephone','adresse'], 'string'], [['nom','prenom','email'],'required','message'=> 'Ce champs ne peut être vide'], ['email','email','message'=> 'Cette adresse email n\'est pas valide'], ['email','verifyEmail'], ['status', 'default', 'value' => self::STATUS_ACTIVE], ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_ADMIN]], ]; } public function verifyEmail($attribute,$params) { $user = User::find()->where("email LIKE :email AND id != :id")->params(array(':email'=>'%'.$this->email.'%', ':id'=>$this->id))->one() ; if($user) $this->addError($attribute, 'Cette adresse email est déjà utilisée par un autre utilisateur '); } /** * @inheritdoc */ public static function findIdentity($id) { return static::findOne(['id' => $id/*, 'status' => self::STATUS_ACTIVE*/]); } /** * @inheritdoc */ public static function findIdentityByAccessToken($token, $type = null) { throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.'); } /** * Finds user by username * * @param string $username * @return static|null */ public static function findByUsername($username) { return static::findOne(['username' => $username/*, 'status' => self::STATUS_ACTIVE*/]); } public static function findByEmail($email) { return static::findOne(['email' => $email /*, 'status' => self::STATUS_ACTIVE*/]); } /** * Finds user by password reset token * * @param string $token password reset token * @return static|null */ public static function findByPasswordResetToken($token) { if (!static::isPasswordResetTokenValid($token)) { return null; } return static::findOne([ 'password_reset_token' => $token, 'status' => self::STATUS_ACTIVE, ]); } /** * Finds out if password reset token is valid * * @param string $token password reset token * @return boolean */ public static function isPasswordResetTokenValid($token) { if (empty($token)) { return false; } $expire = Yii::$app->params['user.passwordResetTokenExpire']; $parts = explode('_', $token); $timestamp = (int) end($parts); return $timestamp + $expire >= time(); } /** * @inheritdoc */ public function getId() { return $this->getPrimaryKey(); } /** * @inheritdoc */ public function getAuthKey() { return $this->auth_key; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->getAuthKey() === $authKey; } /** * Validates password * * @param string $password password to validate * @return boolean if password provided is valid for current user */ public function validatePassword($password) { return Yii::$app->security->validatePassword($password, $this->password_hash); } /** * Generates password hash from password and sets it to the model * * @param string $password */ public function setPassword($password) { $this->password_hash = Yii::$app->security->generatePasswordHash($password); } /** * Generates "remember me" authentication key */ public function generateAuthKey() { $this->auth_key = Yii::$app->security->generateRandomString(); } /** * Generates new password reset token */ public function generatePasswordResetToken() { $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time(); } /** * Removes password reset token */ public function removePasswordResetToken() { $this->password_reset_token = null; } public function attributeLabels() { return [ 'id' => 'ID', 'username' => 'Identifiant', 'password' => 'Mot de passe', 'rememberMe' => 'Se souvenir de moi', 'confiance' => 'De confiance', 'no_mail' => 'Ne pas recevoir d\'email de la part du Chat des Noisettes', 'mail_prod_lundi' => 'Lundi', 'mail_prod_mardi' => 'Mardi', 'mail_prod_mercredi' => 'Mercredi', 'mail_prod_jeudi' => 'Jeudi', 'mail_prod_vendredi' => 'Vendredi', 'mail_prod_samedi' => 'Samedi', 'mail_prod_dimanche' => 'Dimanche', ]; } public function isBoulanger() { return $this->is_boulanger ; } public function getBoulangeriesFavoris() { return (new \yii\db\Query()) ->select('*') ->from(['user_boulangerie','user']) ->where('user_boulangerie.id_boulangerie = user.id') ->andWhere(['user_boulangerie.id_user' => $this->id]) ->all(); } }