public function actionPermissionForRole()
{
$rr = new RequestResponse();
if (!($permissionName = \Yii::$app->request->post('permissionName'))) {
$rr->success = false;
$rr->message = "Некорректные параметры";
return $rr;
}
$permission = \Yii::$app->authManager->getPermission($permissionName);
if (!$permission) {
$rr->success = false;
$rr->message = "Привилегия не найдена";
return $rr;
}
$rolesValues = (array) \Yii::$app->request->post('roles');
$rolesValues[] = CmsManager::ROLE_ROOT;
//у root пользователя нельзя отобрать права
foreach (\Yii::$app->authManager->getRoles() as $role) {
if (in_array($role->name, $rolesValues)) {
if (!\Yii::$app->authManager->hasChild($role, $permission)) {
\Yii::$app->authManager->addChild($role, $permission);
}
} else {
if (\Yii::$app->authManager->hasChild($role, $permission)) {
\Yii::$app->authManager->removeChild($role, $permission);
}
}
$rr->message = "Права доступа сохранены";
$rr->success = true;
}
return $rr;
}