get('active_org_id'); // Если организация не выбрана - пропускаем (другие фильтры обработают) if (!$orgId) { return; } // Базовый модуль всегда доступен if ($moduleCode === 'base') { return; } $subscriptionService = new ModuleSubscriptionService(); // Проверяем доступность модуля if (!$subscriptionService->isModuleAvailable($moduleCode, $orgId)) { $session->setFlashdata('error', 'Модуль "' . $this->getModuleName($moduleCode) . '" не активен для вашей организации'); return redirect()->to('/'); } } /** * Получение читаемого имени модуля */ protected function getModuleName(string $moduleCode): string { $names = [ 'crm' => 'CRM', 'booking' => 'Бронирования', 'tasks' => 'Задачи', 'proof' => 'Proof', ]; return $names[$moduleCode] ?? $moduleCode; } /** * Обработка ответа после выполнения запроса */ public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { // Ничего не делаем после запроса } }