protected function processActionShowRightsDetail() { $this->checkRequiredPostParams(array('objectId')); if ($this->errorCollection->hasErrors()) { $this->sendJsonErrorResponse(); } /** @var \Bitrix\Disk\File|\Bitrix\Disk\Folder $object */ $object = BaseObject::loadById((int) $this->request->getPost('objectId'), array('STORAGE')); if (!$object) { $this->errorCollection->add(array(new Error(Loc::getMessage('DISK_FOLDER_LIST_ERROR_COULD_NOT_FIND_OBJECT'), self::ERROR_COULD_NOT_FIND_OBJECT))); $this->sendJsonErrorResponse(); } $rightsManager = Driver::getInstance()->getRightsManager(); $securityContext = $object->getStorage()->getCurrentUserSecurityContext(); if (!$object->canChangeRights($securityContext)) { $this->sendJsonAccessDeniedResponse(); } $rightsByAccessCode = array(); foreach ($rightsManager->getAllListNormalizeRights($object->getRealObject()) as $rightOnObject) { if (empty($rightOnObject['NEGATIVE'])) { $rightOnObject['TASK'] = $rightsManager->getTaskById($rightOnObject['TASK_ID']); $rightsByAccessCode[$rightOnObject['ACCESS_CODE']][] = $rightOnObject; } } $access = new CAccess(); $names = $access->getNames(array_keys($rightsByAccessCode)); $this->sendJsonSuccessResponse(array('rights' => $rightsByAccessCode, 'accessCodeNames' => $names)); }