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