getUri(); $currentPath = $uri->getPath(); // === БЛОК ДЛЯ ГОСТЕЙ (НЕЗАЛОГИНЕННЫХ) === if (!$session->get('isLoggedIn')) { // Список публичных маршрутов для гостей $publicRoutes = [ '/', '/login', '/register', '/register/success', '/auth/verify', '/auth/resend-verification', ]; if (!in_array($currentPath, $publicRoutes)) { // Если гость лезет не туда (например /organizations) — на главную return redirect()->to('/'); } // Иначе пропускаем return; } // ======================================= // === БЛОК ДЛЯ ЗАЛОГИНЕННЫХ === // Список маршрутов, доступных БЕЗ выбранной организации $publicAuthRoutes = [ '/login', '/register', '/logout', '/register/success', '/auth/verify', '/auth/resend-verification', '/organizations', '/organizations/create', '/organizations/switch' // Начало пути для переключения ]; // Если мы на этих маршрутах — проверка orgId не нужна (мы просто выбираем её) if (in_array($currentPath, $publicAuthRoutes) || strpos($currentPath, '/organizations/switch') === 0) { return; } // Если мы попадаем сюда — значит пользователь идет на закрытую страницу (например /crm) // или на главную (/). // Главную страницу (/) мы проверяем на уровне контроллера Home::index, // поэтому фильтр для '/' можно пропускать, ИЛИ проверить здесь. // Пропустим '/', чтобы контроллер сам решил: редиректить на /organizations или показывать дашборд. if ($currentPath === '/') { return; } // Для всех остальных закрытых страниц проверяем active_org_id if (empty(session()->get('active_org_id'))) { return redirect()->to('/organizations'); } } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { // Do nothing } }