Revision #3                                    has been created by 
 Néstor Acevedo                                    on Sep 16, 2021, 1:13:45 AM with the memo:
                                
                                
                                    I added the method findByUsername inside Identity model, and I changed inside the method getUser from LoginForm, the static function to use Identity::findByUsername according with the common LoginForm model.                                
                                                                    « previous (#2)                                                                                                    next (#4) »                                                            
                            Changes
                            
    Title
    unchanged
    Using multiple models in an identity
    Category
    unchanged
    How-tos
    Yii version
    unchanged
    2.0
    Tags
    unchanged
    authentication,identity
    Content
    changed
    [...]
}
    public function validatePassword($password)
    {
        return password_verify($password, $this->_passwordHash);
    }
 
    
 
    public static function findByUsername(username)
 
    {
 
        $model = Customer::find()->where(['username' => $username])->one();
 
        if (!$model) {
 
            $model = Supplier::find()->where(['username' => $username])->one();
 
        }
 
 
        if (!$model) {
 
            return false;
 
        }
 
 
        if ($model instanceof Customer) {
 
            $type = self::TYPE_CUSTOMER;
 
        } else {
 
            $type = self::TYPE_SUPPLIER;
 
        }
 
 
        $identity = new Identity();
 
        $identity->_id = $type . '-' . $model->id;
 
        $identity->_authkey = $model->authkey;
 
        $identity->_passwordHash = $model->password_hash;
 
        return $identity;
 
    }
    public static function findIdentityByEmail($email)[...]
{
        if ($this->_user === false) {
            $this->_user = Identity::findIdentityByEmailByUsername($this->username);
        }
        return $this->_user;
    }
}[...]