53 lines
1.9 KiB
PHP
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
|
|
{
|
|
// Ничего не делаем после запроса
|
|
}
|
|
}
|