1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
AbstractAccessController.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5
7
15use Bitrix\Socialnetwork\Permission\Trait\AccessUserTrait;
16use ReflectionClass;
17use ReflectionException;
18
20{
21 use AccessUserTrait;
22 use AccessErrorTrait;
23
25 abstract public function getDictionary(): AccessDictionaryInterface;
26
27 public function forward(AccessibleController|string $controller, string $action, AccessibleItem $item, mixed $parameters = null): bool
28 {
29 $controllerInstance = $this->createController($controller);
30
31 $isAccess = $controllerInstance->check($action, $item, $parameters);
32
33 if (!$isAccess && $controllerInstance instanceof AccessErrorInterface)
34 {
35 $this->addErrors(...$controllerInstance->getErrors());
36 }
37
38 return $isAccess;
39 }
40
41 public function addErrors(Error ...$errors): void
42 {
43 foreach ($errors as $error)
44 {
45 $this->addError($error->getCode(), $error->getMessage());
46 }
47 }
48
52 protected function createController(AccessibleController|string $controller): AccessibleController
53 {
54 if ($controller instanceof AccessibleController)
55 {
56 return $controller;
57 }
58
59 try
60 {
61 $reflection = new ReflectionClass($controller);
62
64 $controllerInstance = $reflection->newInstance(userId: $this->user->getUserId());
65 }
66 catch (ReflectionException $e)
67 {
68 throw new ArgumentException($e->getMessage(), $e->getCode());
69 }
70
71 if (!$controllerInstance instanceof AccessibleController)
72 {
73 throw new ArgumentException('Wrong controller class');
74 }
75
76 return $controllerInstance;
77 }
78}
Определения error.php:15
forward(AccessibleController|string $controller, string $action, AccessibleItem $item, mixed $parameters=null)
Определения AbstractAccessController.php:27
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$errors
Определения iblock_catalog_edit.php:74
$error
Определения subscription_card_product.php:20
$action
Определения file_dialog.php:21