public function actionRoleSearch($id, $target, $term = '')
{
$authManager = Yii::$app->authManager;
$avaliable = [];
$assigned = [];
foreach ($authManager->getRolesByUser($id) as $role) {
$type = $role->type;
$assigned[$type == Item::TYPE_ROLE ? 'Roles' : 'Permissions'][$role->name] = $role->name;
}
foreach ($authManager->getRoles() as $role) {
if (!isset($assigned['Roles'][$role->name])) {
$avaliable['Roles'][$role->name] = $role->name;
}
}
foreach ($authManager->getPermissions() as $role) {
if ($role->name[0] !== '/' && !isset($assigned['Permissions'][$role->name])) {
$avaliable['Permissions'][$role->name] = $role->name;
}
}
$result = [];
$var = ${$target};
if (!empty($term)) {
foreach (['Roles', 'Permissions'] as $type) {
if (isset($var[$type])) {
foreach ($var[$type] as $role) {
if (strpos($role, $term) !== false) {
$result[$type][$role] = $role;
}
}
}
}
} else {
$result = $var;
}
return Html::renderSelectOptions('', $result);
}