1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
CheckDiskFileAccess.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Controller\Filter;
4
5use Bitrix\Im\V2\Entity\File\FileCollection;
6use Bitrix\Im\V2\Entity\File\FileError;
7use Bitrix\Main\Engine\ActionFilter\Base;
8use Bitrix\Main\Event;
9use Bitrix\Main\EventResult;
10
12{
13 public function onBeforeAction(Event $event)
14 {
15 foreach ($this->getAction()->getArguments() as $argument)
16 {
17 if ($argument instanceof FileCollection)
18 {
19 return $this->checkFileCollectionAccess($argument);
20 }
21 }
22
23 return null;
24 }
25
26 private function checkFileCollectionAccess(FileCollection $files): ?EventResult
27 {
28 foreach ($files as $file)
29 {
30 $diskFile = $file->getDiskFile();
31 $storage = $diskFile?->getStorage();
32
33 if (
34 !isset($diskFile, $storage)
35 || !$diskFile->canRead($storage->getCurrentUserSecurityContext())
36 )
37 {
38 $this->addError(new FileError(FileError::ACCESS_ERROR));
39 return new EventResult(EventResult::ERROR, null, null, $this);
40 }
41 }
42
43 return null;
44 }
45}
addError(Error $error)
Определения base.php:80
$files
Определения mysql_to_pgsql.php:30
$event
Определения prolog_after.php:141
if(empty($decryptedData)) $storage
Определения quickway.php:270