>> */ private array $authorizations = []; public function __construct( private readonly ActionAuthorizationService $authorizationService, ) {} public function add(string $controllerClass, string $actionMethod, string|array|null $callback, bool $requireLogin, array $requireGroups): void { $this->authorizations[$controllerClass][$actionMethod][] = new Authorize($callback, $requireLogin, $requireGroups); } /** * @return list */ public function getAuthorizeAttributes(string $controllerClass, string $actionMethod): array { return $this->authorizations[$controllerClass][$actionMethod] ?? []; } public function checkAuthorization(ActionController $controller, string $actionMethod, array $preparedArguments): ?AuthorizationResult { $authorizeAttributes = $this->getAuthorizeAttributes($controller::class, $actionMethod); if ($authorizeAttributes === []) { return null; } return $this->authorizationService->checkAuthorization($controller, $authorizeAttributes, $preparedArguments); } }