Ahe galera estou com um pequeno problema.
Tipo o meu sistema que controla o site esta em uma pasta chamada protected/backend, ate ai blz, ahi eu fiz uma rota, que quando o usuario digita www.meusite.com.br/sisadm -> cai na pagina de login, onde te um (Logincontroller) e um layout proprio, que colocarei em baixo, quando o usuario faz o login é direcionadado para sisadm/home que o mesmo tem um (Homecontroller).
Tipo as minha duvida é o seguinte:
-
Quando o usuario seleciona o opcao para relembrar, e entra novamente no sistema cai na tela de login ele nao loga automaticamente.
-
Outra coisa se eu digito o endereço direto www.meusite.com.br/sisadm/home cai na pagina inicial do sistema como faço para se ele nao tiver logado mandar ele para pagina login. Verificar se ele esta logado(teria que fazer isso em todo os controller).
LoginForm.php
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe = false;
private $_identity;
/**
* Declares the validation rules.
* The rules state that username and password are required,
* and password needs to be authenticated.
*/
public function rules()
{
return array(
// username and password are required
array('username, password', 'required'),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate', 'skipOnError'=>true),
);
}
/**
* Declares attribute labels.
*/
public function attributeLabels()
{
return array(
'rememberMe'=>'Remember me next time',
);
}
/**
* Authenticates the password.
* This is the 'authenticate' validator as declared in rules().
*/
public function authenticate($attribute,$params)
{
$this->_identity=new UserIdentity($this->username,$this->password);
if(!$this->_identity->authenticate())
$this->addError('password','Incorrect username or password.');
}
/**
* Logs in the user using the given username and password in the model.
* @return boolean whether login is successful
*/
public function login()
{
if($this->_identity===null)
{
$this->_identity=new UserIdentity($this->username,$this->password);
$this->_identity->authenticate();
}
if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
{
$duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days
Yii::app()->user->login($this->_identity,$duration);
return true;
}
else
return false;
}
}
UserItentity.php
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$username=strtolower($this->username);
$user=Usuario::model()->find('LOWER(username)=?',array($username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($user->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->id;
$this->username=$user->username;
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCode==self::ERROR_NONE;
}
public function getId()
{
return $this->_id;
}
}
LoginController.php
class LoginController extends Controller
{
public $layout='login';
public function actionLogin()
{
$model=new LoginForm;
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
if($model->validate() && $model->login())
$this->redirect('/sisadm/home');
}
$this->render('login',array('model'=>$model));
}
public function actionLogout()
{
Yii::app()->user->logout();
$this->redirect(Yii::app()->homeUrl);
}
}
config.php
'user'=>array(
'allowAutoLogin'=>true,
'loginUrl'=>array('/sisadm/'),
),
Bom espero que me ajude na duvidas acima.
Valew