1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
CheckChatAccess.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Controller\Filter;
4
5use Bitrix\Im\V2\Chat;
6use Bitrix\Im\V2\Message;
7use Bitrix\Im\V2\MessageCollection;
8use Bitrix\Im\V2\Result;
9use Bitrix\Main\Engine\ActionFilter\Base;
10use Bitrix\Main\Event;
11use Bitrix\Main\EventResult;
12
13class CheckChatAccess extends Base
14{
15 public function onBeforeAction(Event $event)
16 {
17 $checkResult = $this->checkAccess();
18 if (!$checkResult->isSuccess())
19 {
20 $this->addError($checkResult->getErrors()[0] ?? new Chat\ChatError(Chat\ChatError::ACCESS_DENIED));
21
22 return new EventResult(EventResult::ERROR, null, null, $this);
23 }
24
25 return null;
26 }
27
28 private function checkAccess(): Result
29 {
30 foreach ($this->getAction()->getArguments() as $argument)
31 {
32 if ($argument instanceof Message)
33 {
34 return $argument->checkAccess();
35 }
36 if ($argument instanceof MessageCollection)
37 {
38 return $this->checkAccessToMessages($argument);
39 }
40 if ($argument instanceof Chat)
41 {
42 return $argument->checkAccess();
43 }
44 }
45
46 return new Result();
47 }
48
49 private function checkAccessToMessages(MessageCollection $messages): Result
50 {
51 foreach ($messages as $message)
52 {
53 $checkResult = $message->checkAccess();
54
55 if (!$checkResult->isSuccess())
56 {
57 return $checkResult;
58 }
59 }
60
61 return new Result();
62 }
63}
const ACCESS_DENIED
Определения ChatError.php:19
Определения result.php:20
addError(Error $error)
Определения base.php:80
Определения Uuid.php:3
$message
Определения payment.php:8
$event
Определения prolog_after.php:141
$messages
Определения template.php:8