napeHeK  
            (Napehek)
           
           
          
              
                March 4, 2010,  3:32pm
               
               
          1 
           
         
        
          Код работает отлично
if(Yii::app()->user->checkAccess('updateProfile', $user['id']))
{
    //Тут что-то
}
 
Как в методе Rules передать params?
	public function accessRules()
	{		
		return array(
			array('allow',
				'actions' => array('edit'),
				'roles' => array('updateProfile'),
			),
			array('deny',
				  'actions' => array('edit'),
				  'users'=>array('*'),
			),
		);
	}
 
Это контроллер профиля пользователя…право редактировать дается админу и пользователю профиля…
	'updateProfile' => array(
		'type' => 0,
		'description' => 'Редактирование профиля',
		'bizRule' => NULL,
		'data' => NULL,
	),
	
	'updateMyProfile' => array(
		'type' => 1,
		'description' => 'редактирование своего профиля',
		'bizRule' => 'return Yii::app()->user->id == $params;',
		'data' => NULL,
		'children' => array(
			0 => 'updateProfile',
		),
	),
	'administrator' => array(
		'type' => 2,
		'description' => 'Администратор',
		'bizRule' => NULL,
		'data' => NULL,
		'children' => array(
			'moderator',
			'updateProfile',
		),
	),
 
Как передать параметр в фильтре или может я пошел неправильным путем…?
         
         
           
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            creocoder  
            (Creocoder)
           
           
          
              
                March 5, 2010,  7:04am
               
               
          2 
           
         
        
          В качестве второго параметра в checkAccess() передается массив. У вас вместо этого
А нужно
Также необходимо переделать bizRule следующим образом:
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            napeHeK  
            (Napehek)
           
           
          
              
                March 5, 2010,  8:30am
               
               
          3 
           
         
        
          Та блин…я не об этом спрашивал…и вы не правы! Мне нужно передавать один параметр…зачем передавать массив? Yii все равно…
Yii::app()->user->checkAccess('updateProfile', $user['id'])
 
'bizRule' => 'return Yii::app()->user->id == $params;'
 
Код нормально работает. А я леньтяй, пусть это немного нарушает логику…просто писать меньше.
Как в методе accessRules() передать параметр…?
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            napeHeK  
            (Napehek)
           
           
          
              
                March 5, 2010,  8:38am
               
               
          4 
           
         
        
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            creocoder  
            (Creocoder)
           
           
          
              
                March 13, 2010, 11:57pm
               
               
          5 
           
         
        
          to napeHeK 
Ещё раз перечитайте пост. Попробуйте сделать, потом утверждайте, что
Чтобы понять что нужно передавать именно массив, посмотрите реализацию любого из AuthManager.
Вот Yii не всеравно, а вам я бы порекомендовал прочитать хотябы раздел документации по RBAC, чтобы увидеть что передается массив даже в элементарном случае. Вот так
'bizRule' => 'return Yii::app()->user->id == $params;'
 
не делают! Как делают я вам написал, смотрите в документации, если сомневаетесь.   Потом когда нужно будет передать 10 параметров в checkAccess при сложнейшей иерархии, таких вопросов уже возникать не будет.
Никак. CAccessFilter работает только для простейших случаев авторизации. Для более сложных используются непосредственные проверки в действиях.
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            napeHeK  
            (Napehek)
           
           
          
              
                March 14, 2010, 10:52pm
               
               
          6 
           
         
        
          Ладно, гляну реализацию…но…
Мы передаем переменную и если это массив, обращаемся как массив, если обычную переменную, то используем как переменную…
Блин это логика…я посмотрю обязательно