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