Всем привет! Вопрос по валидации в Yii2. Возвращает "Пароль или логин введены неверно", хотя данные я ввожу с бд MSSQL правильные. Вот мой контроллер SiteController , модель Login и модель RecipientPortalUser:
<?php
//namespace app\controllers;
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
use app\models\Signup;
use app\models\Login;
use yii\db\Query;
use app\models\RecipientPortalUser;
/**
* Site controller
*/
class SiteController extends Controller
{
public function actionIndex()
{
$records = RecipientPortalUser::getAllRecords();
return $this->render('index',compact('records'));
}
public function actionLogout()
{
if(!Yii::$app->user->isGuest)
{
Yii::$app->user->logout();
return $this->redirect(['login']);
}
}
// для регистрации
public function actionSignup()
{
$model = new Signup();
if(isset($_POST['Signup']))
{
$model->attributes = Yii::$app->request->post('Signup');
if($model->validate() && $model->signup())
{
return $this->redirect(['index']);
}
}
return $this->render('signup',['model'=>$model]);
}
//1. Проверить существует ли пользователь?
//2. "Внести" пользователя в систему(в сессию)
public function actionLogin()
{
if (!Yii::$app->user->isGuest)
{
return $this->goHome();
}
$login_model = new Login();
if( Yii::$app->request->post('Login'))
{
$login_model->attributes = Yii::$app->request->post('Login');
if($login_model->validate())
{
Yii::$app->user->login($login_model->getUser());
return $this->goHome();
}
else
{
return "No validated";
}
}
return $this->render('login',['login_model'=>$login_model]);
}
}
//==========================================================================================
<?php
namespace app\models;
use yii\base\Model;
class Login extends Model
{
public $login; // есть
public $password; // есть
public function rules()
{
return [
[['login','password'],'required'],
[['login'],'string'],
[['login'],'trim'],
[['password'],'trim'],
['password','validatePassword'] //собственная функция для валидации пароля
];
}
public function validatePassword($attribute,$params)
{
if(!$this->hasErrors()) // если нет ошибок в валидации
{
$user = $this->getUser();
if(!$user || !$user->validatePassword($this->password))
{
//если мы НЕ нашли в базе такого пользователя
//или введенный пароль и пароль пользователя в базе НЕ равны ТО,
$this->addError($attribute,'Пароль или логин введены неверно');
//добавляем новую ошибку для атрибута password о том что пароль или имейл введены не верно
}
}
}
public function getUser()
{
return RecipientPortalUser::findOne(['_login'=>$this->login]); // а получаем мы его по введенному логину
}
}
//=================================================================================================
<?php
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
class RecipientPortalUser extends ActiveRecord implements IdentityInterface
{
//public $login;
public $password;
//public $id;
public static function tableName()
{
return 'dbo.RecipientPortal_User';
}
public static function primaryKey()
{
return ['row_id'];
}
public function setPassword($password)
{
$this->password = sha1($password);
}
public function validatePassword($password)
{
return $this->password === sha1($password);
}
//==========================
public static function findIdentity($id)
{
return self::findOne($id);
}
public function getId()
{
return $this->id;
}
public static function findIdentityByAccessToken($token, $type = null)
{
}
public function getAuthKey()
{
}
public function validateAuthKey($authKey)
{
}
public static function getAllRecords()
{
$findAll = RecipientPortalUser::find()->all();
return $findAll;
}
}