Пример #1
0
 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));
 }