Files
bp/app/Filters/OrganizationFilter.php
T

53 lines
1.9 KiB
PHP

<?php
namespace App\Filters;
use CodeIgniter\Filters\FilterInterface;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
/**
* OrganizationFilter - Фильтр выбора организации
*
* Проверяет, что у авторизованного пользователя выбрана организация.
* Если организация не выбрана — редирект на /organizations.
*
* Применяется к маршрутам, которые требуют выбранной организации
* (например, дашборд, управление клиентами, задачи и т.д.).
*/
class OrganizationFilter implements FilterInterface
{
/**
* Проверка выбора организации перед обработкой запроса
*
* @param RequestInterface $request
* @param array|null $arguments
* @return ResponseInterface|void
*/
public function before(RequestInterface $request, $arguments = null)
{
// Если пользователь не авторизован — пропускаем (AuthFilter разберётся)
if (!session()->get('isLoggedIn')) {
return;
}
// Проверяем, выбрана ли организация
if (empty(session()->get('active_org_id'))) {
return redirect()->to('/organizations');
}
}
/**
* Обработка после выполнения запроса
*
* @param RequestInterface $request
* @param ResponseInterface $response
* @param array|null $arguments
* @return void
*/
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void
{
// Ничего не делаем после запроса
}
}