Using Accessrules

hi, i want to get users that have access permission from db with following code but it doesn’t work. can anyone help me? thanks




public function accessRules()

	{

		return array(

			...

			array('allow',

				'actions'=>array('admin','delete'),

				'users'=>array($this->userLevel(2)),

			),

			array('deny',  // deny all users

				'users'=>array('*'),

			),

		);

	}

...

public function userLevel($level)

    {

        $levelUsers=User::model()->findAll(array(

            'select'=>'name',

            'condition'=>'level=:level',

            'params'=>array(':level'=>$level),

        ));

        $names = '';

       foreach($levelUsers as $levelUser)

       {

        $names .= "'".$levelUser->name."',";

       }

       

       return $names;

    }



it works properly when i use it in other place.(i mean it return the correct string e.g ‘user1’,‘user2’,…)

Hi

u may something look like this


 'users'=>explode(',',$model->permission_type),

Below Example


public function accessRules($userType = 'admin', $isDefault=false)

        {

                $user_roles = $this->getRole();

                

                //$user_roles = ((CustomerModule::getUserDataByKey('user_roles')!='')?CustomerModule::getUserDataByKey('user_roles'):"''");

                $models = UserRules::model()->findAll("privileges_controller = '".$this->getControllerName()."'

                AND module_id = '".$this->getModuleId()."' AND role_id IN (".$user_roles.")");

                

                foreach($models as $model) {

                        $array[] = array(

                        $model->permission,

                                'actions'=>explode(',',$model->privileges_actions),

                                'users'=>explode(',',$model->permission_type),

                                'desc'=>$model->role_desc,

                        );

                }


                if(isset($array)) {

                        return $array;

                }else {

                        return $this->defaultAccessRules();

                }

        }

thanks it is nice way. but just for record my mistake was using string instead of array. correct is :




array('allow',

    'actions'=>array('admin','delete'),

    'users'=>$this->userLevel(2),

),



and method:




public function userLevel($level)

    {

        $levelUsers=User::model()->findAll(array(

            'select'=>'name',

            'condition'=>'level=:level',

            'params'=>array(':level'=>$level),

        ));

        $names = array();

       foreach($levelUsers as $levelUser)

       {

        array_push($names, $levelUser->name);

       }

       

       return $names;

    }