negar
(Nar8591)
May 12, 2013, 8:46am
1
salam
this is my code:
class UserManageController extends Controller
{
public function accessRules()
{
$staff = Rool::model()->find('sid=:i',array(':i'=>yii::app()->session['sid']));
$p = $staff->role;
return array(
array('allow',
'actions'=>array('accept','delete','edit'),
'expression'=> $p.' > 1',
),
array('allow',
'actions'=>array('add'),
'users'=>array('*') ,
),
array('deny',
'users'=>array('*'),
),
);
}
//..... where is my actions....
}
vali accessRules() , e’mal nemishe.
chi kam neveshtam??
mer30
micky41
(Lotfi Aly)
May 12, 2013, 9:01am
2
[rtl]
من تو کد های شما اشکالی نمی بینم.
اما من یه فایل یه اسم EWebUser.php ساختم و تو components گذاشتمش.کد هاش هم اینه:
[/rtl]
<?PHP
class EWebUser extends CWebUser
{
public function canAccess($minimumLevel)
{
//Access this via Yii::app()->user->canAccess(9)
return (Yii::app()->user->isGuest) ? FALSE : $this->level >= $minimumLevel;
}
}
?>
[rtl]اینم از accessRules[/rtl]
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index','view'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('admin','delete','update'),
'expression'=>'$user->canAccess(6)'
),
array('deny',
'users'=>array('*'),
),
);
}
negar
(Nar8591)
May 12, 2013, 10:46am
3
[rtl]
من تو کد های شما اشکالی نمی بینم.
اما من یه فایل یه اسم EWebUser.php ساختم و تو components گذاشتمش.کد هاش هم اینه:
[/rtl]
<?PHP
class EWebUser extends CWebUser
{
public function canAccess($minimumLevel)
{
//Access this via Yii::app()->user->canAccess(9)
return (Yii::app()->user->isGuest) ? FALSE : $this->level >= $minimumLevel;
}
}
?>
[rtl]اینم از accessRules[/rtl]
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index','view'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('admin','delete','update'),
'expression'=>'$user->canAccess(6)'
),
array('deny',
'users'=>array('*'),
),
);
}
سلام
مرسی از جوابتون.
اما
$user
از کجا آوردین؟؟
من که اسم مدل خودم رو مینویسم خطا میده که: مدل شما این متد رو نمیشناسه!
1مورد دیگه هم هست ،اینکه
برای کنترلر هم باید فیلتر تعریف کنم؟؟
همین کد زیر کافیه؟؟
public function filters()
{
return array( 'accessControl' ); // perform access control for CRUD operations
}
micky41
(Lotfi Aly)
May 12, 2013, 11:51am
4
[rtl]
اولا اینکه برای اینکه متنتون تو فروم rtl بشه متنتون رو توی این تگ بنویسید:
[/rtl]
[rtl][/rtl]
[rtl]
دوما
[/rtl]
$user
[rtl]
به کاربر جاری اشاره می کنه.
سوما برای اینکه کنترلر از این accessRules استفاده کنه باید همچین تابعی تو کنترلرتون باشه:
[/rtl]
public function filters()
{
return array(
'accessControl', // perform access control for CRUD operations
'postOnly + delete', // we only allow deletion via POST request
);
}
[rtl]
قسمت دوم تایع که ‘postOnly + delete’ هست هم به این معنیه که حذف فقط با ارسال post انجام می شه و برای امنیت اکیدا توصیه می شه که این هم تو کد هاتون باشه.وگرنه الزامی به بودنش نیست.
امیدوارم تونسته باشم منظورم رو برسونم.
[/rtl]
micky41
(Lotfi Aly)
May 12, 2013, 12:38pm
5
[rtl]
در ضمن
[/rtl]
$this->level
[rtl]
را هم با اضافه کردن کد:
[/rtl]
$this->setState('level', $user->type);
[rtl]
به فایل UserIdentity.php در پوشه ی components می تونید ازش استفاده کنید.
و چون هم UserIdentity و هم EWebUser کلاس بیسشان یکی است با
[/rtl]
$this
[rtl]
بهش دسترسی دارید.اما در جاهای دیگه با
[/rtl]
Yii::app()->user->canAccess(9)
[rtl]
یا
[/rtl]
Yii::app()->user->level
[rtl]
بهش دسترسی دارید.
[/rtl]
negar
(Nar8591)
May 13, 2013, 6:48am
6
[right]از اینکه وقت گذاشتید و با حوصله جوابم رو دادید بی نهایت ممنونم
در ضمن متوجه شدم که [/right]
$this->setState('level', $record->name);
[right]در کدهای من جواب نمیده و به جای اون از[/right]
Yii::app()->user->setState('level',$record->name);
[right]استفاده کردم. نمیدونم این اشکال داره یا نه؟!
به هرحال 2باره ازتون سپاسگزارم
ولی فیلترم هنوزم کار نمیکنه
[/right]
msoa
May 17, 2013, 8:38pm
7
salam
this is my code:
class UserManageController extends Controller
{
public function accessRules()
{
$staff = Rool::model()->find('sid=:i',array(':i'=>yii::app()->session['sid']));
$p = $staff->role;
return array(
array('allow',
'actions'=>array('accept','delete','edit'),
'expression'=> $p.' > 1',
),
array('allow',
'actions'=>array('add'),
'users'=>array('*') ,
),
array('deny',
'users'=>array('*'),
),
);
}
//..... where is my actions....
}
vali accessRules() , e’mal nemishe.
chi kam neveshtam??
mer30
[font="Tahoma"][rtl]این رو امتحان کنید:[/rtl][/font]
'expression'=> '$p > 1',
negar
(Nar8591)
May 19, 2013, 4:22am
8
[right]
مرسی اما
واقعا نمیدونم اشکال کارم کجاست ، هر تغییری که میدم اعمال نمیشه .
الان کد زیر هم جواب نمیده:
public function filters()
{
return array( 'accessControl' ); // perform access control for CRUD operations
}
public function accessRules()
{
return array(
array('allow',
'actions'=>array('Accept','delete','Edit','index',),
'users'=>array('@'),
'expression'=>'$user->role == 2',
),
);
}
آیا جای دیگه ای هم هست که باید تغییر بدم تا این کد اعمال بشه ؟؟
[/right]
public function filters()
{
return array( 'accessControl' ); // perform access control for CRUD operations
}
public function accessRules()
{
return
array(
array('allow',
'actions'=>array('Accept','delete','Edit','index',),
'users'=>array('@'),
'expression'=> $user->role == 2 ? '1==1':'1==2',
),
array('deny', // deny all users
'users'=>array('*'),
'actions'=>array('Accept','delete','Edit','index',),
),
);
}
negar
(Nar8591)
May 20, 2013, 4:24am
10
rezaonline.net:
public function filters()
{
return array( 'accessControl' ); // perform access control for CRUD operations
}
public function accessRules()
{
return
array(
array('allow',
'actions'=>array('Accept','delete','Edit','index',),
'users'=>array('@'),
'expression'=> $user->role == 2 ? '1==1':'1==2',
),
array('deny', // deny all users
'users'=>array('*'),
'actions'=>array('Accept','delete','Edit','index',),
),
);
}
[right]با سلام
خیلی ممنونم ازتون ، درست شد. فقط با
$user->role
خطا میداد که
user
رو نمیشناسه ، من به جای
$user
از
yii::app()->session[‘role’]
استفاده کردم و مشکلم حل شد.
با سپاس فراوان از همه دوستانی که کمکم کردند[/right]
Mahmood3D
(Mahmoodkhoeini)
June 9, 2013, 6:15am
11
[RTL]برای اینکه به $user خطا نگیره به این صورت باید ازش استفاده کنی:
Yii::app()->user[/RTL]