Yii Framework Forum: Accessrules() - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Accessrules()

#1 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 226
  • Joined: 19-April 13

Posted 12 May 2013 - 03:46 AM

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
0

#2 User is offline   Ali Lotfi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 19
  • Joined: 25-June 11

Posted 12 May 2013 - 04:01 AM


من تو کد های شما اشکالی نمی بینم.
اما من یه فایل یه اسم EWebUser.php ساختم و تو components گذاشتمش.کد هاش هم اینه:

<?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;
    }
 
}
?>

اینم از accessRules

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('*'),
			),
		);
	}

1

#3 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 226
  • Joined: 19-April 13

Posted 12 May 2013 - 05:46 AM

View PostAli Lotfi, on 12 May 2013 - 04:01 AM, said:


من تو کد های شما اشکالی نمی بینم.
اما من یه فایل یه اسم EWebUser.php ساختم و تو components گذاشتمش.کد هاش هم اینه:

<?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;
    }
 
}
?>

اینم از accessRules

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 
            }

0

#4 User is offline   Ali Lotfi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 19
  • Joined: 25-June 11

Posted 12 May 2013 - 06:51 AM


اولا اینکه برای اینکه متنتون تو فروم rtl بشه متنتون رو توی این تگ بنویسید:

[rtl][/rtl]


دوما

$user


به کاربر جاری اشاره می کنه.
سوما برای اینکه کنترلر از این accessRules استفاده کنه باید همچین تابعی تو کنترلرتون باشه:

public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete', // we only allow deletion via POST request
		);
	}


قسمت دوم تایع که 'postOnly + delete' هست هم به این معنیه که حذف فقط با ارسال post انجام می شه و برای امنیت اکیدا توصیه می شه که این هم تو کد هاتون باشه.وگرنه الزامی به بودنش نیست.
امیدوارم تونسته باشم منظورم رو برسونم.

0

#5 User is offline   Ali Lotfi 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 19
  • Joined: 25-June 11

Posted 12 May 2013 - 07:38 AM


در ضمن

$this->level


را هم با اضافه کردن کد:

$this->setState('level', $user->type);


به فایل UserIdentity.php در پوشه ی components می تونید ازش استفاده کنید.
و چون هم UserIdentity و هم EWebUser کلاس بیسشان یکی است با

$this


بهش دسترسی دارید.اما در جاهای دیگه با

Yii::app()->user->canAccess(9)


یا

Yii::app()->user->level


بهش دسترسی دارید.

0

#6 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 226
  • Joined: 19-April 13

Posted 13 May 2013 - 01:48 AM

از اینکه وقت گذاشتید و با حوصله جوابم رو دادید بی نهایت ممنونم
در ضمن متوجه شدم که

$this->setState('level', $record->name);

در کدهای من جواب نمیده و به جای اون از
Yii::app()->user->setState('level',$record->name);

استفاده کردم. نمیدونم این اشکال داره یا نه؟!
به هرحال 2باره ازتون سپاسگزارم
ولی فیلترم هنوزم کار نمیکنه


0

#7 User is offline   msoa 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 261
  • Joined: 15-August 12

Posted 17 May 2013 - 03:38 PM

View Postn-r, on 12 May 2013 - 03:46 AM, said:

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

این رو امتحان کنید:

'expression'=> '$p > 1',

0

#8 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 226
  • Joined: 19-April 13

Posted 18 May 2013 - 11:22 PM

View Postmsoa, on 17 May 2013 - 03:38 PM, said:

این رو امتحان کنید:

'expression'=> '$p > 1',



مرسی اما
واقعا نمیدونم اشکال کارم کجاست ، هر تغییری که میدم اعمال نمیشه .

الان کد زیر هم جواب نمیده:

        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',
                        
                        ),
                     
                       
       

                       
                );
             }

آیا جای دیگه ای هم هست که باید تغییر بدم تا این کد اعمال بشه ؟؟

0

#9 User is offline   rezaonline.net 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 120
  • Joined: 20-June 12

Posted 19 May 2013 - 10:13 AM

        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',),
						),
						
                     
                       
       

                       
                );
			}
             

rezaworkshop.ir - rezaonline.net/blog
php5 , mysql , html5 , css3 , jquery + ajax
1

#10 User is offline   n-r 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 226
  • Joined: 19-April 13

Posted 19 May 2013 - 11:24 PM

View Postrezaonline.net, on 19 May 2013 - 10:13 AM, said:

        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',),
						),
						
                     
                       
       

                       
                );
			}
             





با سلام
خیلی ممنونم ازتون ، درست شد. فقط با
$user->role
خطا میداد که
user
رو نمیشناسه ، من به جای
$user
از
yii::app()->session['role']
استفاده کردم و مشکلم حل شد.
با سپاس فراوان از همه دوستانی که کمکم کردند

1

#11 User is offline   Mahmood3D 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 22
  • Joined: 03-June 13
  • Location:Iran

Posted 09 June 2013 - 01:15 AM

برای اینکه به $user خطا نگیره به این صورت باید ازش استفاده کنی:
Yii::app()->user

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users