hi…i am new Babie to yii…userIdentity does not work
this function in login Form does not called…
$this->_identity=new UserIdentity($this->username,$this->password);
<?php
/**
-
UserIdentity represents the data needed to identity a user.
-
It contains the authentication method that checks if the provided
-
data can identity the user.
*/
class UserIdentity extends CUserIdentity
{
/**
* Authenticates a user.
* The example implementation makes sure if the username and password
* are both 'demo'.
* In practical applications, this should be changed to authenticate
* against some persistent user identity storage (e.g. database).
* @return boolean whether authentication succeeds.
*/
/*
public function authenticate()
{
$users=array(
// username => password
'demo'=>'demo',
'admin'=>'admin',
);
if(!isset($users[$this->username]))
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif($users[$this->username]!==$this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;
}
*/
private $_id;
public function authenticate()
{
$record=Trainer::model()->findByAttributes(array('email'=>$this->username)); // here I use Email as user name which comes from database
if($record===null)
{
$this->_id='user Null';
$this->errorCode=self::ERROR_USERNAME_INVALID;
}
else if($record->password!==$this->password) // here I compare db password with passwod field
{ $this->_id=$this->username;
// $this->errorCode=self::ERROR_PASSWORD_INVALID;
}
else if($record['status']!=='Active') // here I check status as Active in db
{
$err = "You have been Inactive by Admin.";
$this->errorCode = $err;
}
else
{
$this->_id=$record['id'];
Yii::app()->session['sUserId'] = $this->_id;
Yii::app()->session['sEmail'] = ucwords($record->email);
Yii::app()->session['mode'] = "trainer";
$this->setState('id', $record['id']);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId() // override Id
{
return $this->_id;
}
}
please help me