corpix  
          
              
                October 30, 2009, 11:11am
               
              1 
           
         
        
          Здравствуйте.
Пользуюсь CPhpAuthManager и очень рад(делал всё по одному из мануалов в сети…кажется с yiiframework.ru ), всё вроде бы работает как часы.
Все роли верно определяются, но.
<?
class PanelController extends CController {
	public function filters() {
		return array ('accessControl' );
	}
	
	public function accessRules() {
		return array (
		array ('allow', 'roles' => array ('administrator' ) ), 
		array ('deny', 'users' => array ('*' ) ) );
	}
	
	public function actionIndex() {
		$this->render ( 'index' );
	}
	
	public function actionMenu() {
		$this->render ( 'menu' );
	}
}
Я имею роль администратора, но при выполнении любого экшена из контроллера accessControl почемуто меня администратором не считает,
хотя Yii::app ()->user->checkAccess ( ‘administrator’ ) возвращает true.
Использовал версию 1.0.8, подумал, что баг, обновился до 1.0.10…таже фигня. Не понимаю почему так.
p.s. какой бы роли я не разрешил действия в accessRules она автоматически "вылетает"
         
        
           
         
            
       
      
        
          
          
            corpix  
          
              
                November 2, 2009,  4:25am
               
              2 
           
         
        
          Неужели никто не знает решения?..очень сомневаюсь, что никто из присутствующих на форуме…да и вообще просмотревших этот топик такого не делал
         
        
           
         
            
       
      
        
        
          незнаю как с CPhpAuthManager но с CDbAuthManager все работает замечательно
         
        
           
         
            
       
      
        
          
          
            corpix  
          
              
                November 5, 2009, 12:54pm
               
              4 
           
         
        
          
Чтож…в таком случае буду изучать код accessControl и CPhpAuthManager…уж очень странное явление =(
         
        
           
         
            
       
      
        
          
          
            creocoder  
          
              
                November 5, 2009,  5:36pm
               
              5 
           
         
        
          to corpix 
поменяй местами
                array ('allow', 'roles' => array ('administrator' ) ), 
                array ('deny', 'users' => array ('*' ) ) );
Если я не ошибаюсь то проверка прав идет по нисходящей
         
        
           
         
            
       
      
        
        
          
 creocoder:
 
поменяй местами
                array ('allow', 'roles' => array ('administrator' ) ), 
                array ('deny', 'users' => array ('*' ) ) );
Если я не ошибаюсь то проверка прав идет по нисходящей
 
 
абсолютно не имеет никакого значения сначало идут запрещающие правила, потом разрешающие
         
        
           
         
            
       
      
        
          
          
            corpix  
          
              
                November 11, 2009,  3:46am
               
              7 
           
         
        
          
 creocoder:
 
to corpix 
поменяй местами
                array ('allow', 'roles' => array ('administrator' ) ), 
                array ('deny', 'users' => array ('*' ) ) );
Если я не ошибаюсь то проверка прав идет по нисходящей
 
 
И вправду, никакой разницы…
Проблема остаётся открытой.
         
        
           
         
            
       
      
        
          
          
            corpix  
          
              
                November 11, 2009,  4:15am
               
              8 
           
         
        
          Всё…я понял в чём была проблема…моя ошибка.
	protected function isRoleMatched($user)
	{
		if(empty($this->roles))
			return true;
		foreach($this->roles as $role)
		{
			if($user->checkAccess($role))
				return true;
		}
		return false;
	}
if($user->checkAccess($role))
checkAccess() я немножко переопределил…
         
        
           
         
            
       
      
        
          
          
            andryam  
          
              
                November 18, 2009,  9:35am
               
              9 
           
         
        
          
 corpix:
 
Всё…я понял в чём была проблема…моя ошибка.
	protected function isRoleMatched($user)
	{
		if(empty($this->roles))
			return true;
		foreach($this->roles as $role)
		{
			if($user->checkAccess($role))
				return true;
		}
		return false;
	}
if($user->checkAccess($role))
checkAccess() я немножко переопределил…
 
 
интересна реализация, если не затруднит, сможете выложить рабочий код, буду очень благодарен вам. Сам я только недавно начал изучать Yii, и пока не всё так легко даётся с первого раза