skeeks\cms\controllers\RbacController::actionPermissionForRole PHP 메소드

actionPermissionForRole() 공개 메소드

Выбор файла
public actionPermissionForRole ( ) : string
리턴 string
    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;
    }