pas kita login kan nyimpen variable session untuk username,password dan ID kan, trs saya mau tambahin untuk LEVEL user yg login, tappi errorrr , kira2 knp yaa,
ini codenya.
UserIdentity.php
class UserIdentity extends CUserIdentity
{
private $_id;
private $level;
public function authenticate()
{
$record=Emp::model()->findByAttributes(array('email'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==$this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id_emp;
$this->username = $record->fname;
$this->level = $record->id_lev;
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
public function getLevel()
{
return $this->level;
}
}
view
<h2><?php echo CHtml::encode(Yii::app()->user->name); ?></h2>
<h2><?php echo CHtml::encode(Yii::app()->user->id); ?></h2>
//ini agagal untuk manggil user level nyaaa.
<h2><?php echo CHtml::encode(Yii::app()->user->level);?></h2>
ERRORnya : “Property “CWebUser.level” is not defined.”, kira2 ada yang bisa bantu gak yah. dari pagi usaha sndiri tp gak kelar2 pemula bgt saya om.
sementara saya buat kaya gini sih, gak tau ini bener apa engga
soalnya saya set session[id_lev] di site controller pas lg actionLogin, soalnya kalo mau set session di Useridentity gagal terus alias saya ga tau caranya
user identity
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$record=Emp::model()->findByAttributes(array('email'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==$this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id_emp;
$this->username = $record->fname.' '.$record->lname;
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
siteController
public function actionLogin()
{
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
{
//saya tambahin ini, jadi saya set session level/id_lev ini di sitecontroller
$id = yii::app()->user->id;
$load = $this->loadModel($id);
$session = yii::app()->session;
$session["id_lev"]=$load->id_lev;
$this->redirect(Yii::app()->user->returnUrl);
}
}
// display the login form
$this->render('login',array('model'=>$model));
}
//pake fungsi ini buat ambil dari db
public function loadModel($id)
{
$model=Emp::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
view
<h2>id_emp <?php echo CHtml::encode(Yii::app()->user->id); ?></h2>
<h2>ID LEV <?php echo CHtml::encode(Yii::app()->session["id_lev"]);?></h2>
session dengan nama id_lev berhasil tapi gak tau ini paling bener apa engga, kalo ada yang punya coding berbeda mohon di share ya siapa tau lebih baik
iyak usernamenya diisi sama Email bro , iya sekarang jd gue kasih 2 array email dan password bro thanks udah diingetin. tapi pada halaman registrasi juga gue pake validasi kalo di DB udah terdaftar emailnya, dia ga bisa pake email itu lg
<?php
class EWebUser extends CWebUser{
const ADMIN=1;//konstanta ini untuk level
const MEMBER=0;
public function getLevel(){
$user=User::model()->findByPk($this->id);
if($user)
return $user->LEVEL;
}
public function isAdmin(){
if($this->getLevel()==EWebUser::ADMIN){
return true;
}else{
return false;
}
}
}
?>
dari dulu ane pengen pake yang extends dari EWebUser. tapi ga ngerti caranya…
hahaha…
<?php
class EWebUser extends CWebUser{
const ADMIN=1;//konstanta ini untuk level
const MEMBER=0;
public function getLevel(){
$user=User::model()->findByPk($this->id);
if($user)
return $user->LEVEL;
}
public function isAdmin(){
if($this->getLevel()==EWebUser::ADMIN){
return true;
}else{
return false;
}
}
}
?>