Как правильно перезагрузить страницу, если пользователь удален?

В Symfony есть несколько способов перезагрузить страницу, если пользователь удален.

Первый способ - это использование функционала Symfony для проверки наличия пользователя перед генерацией ответа на запрос страницы. Вы можете использовать аннотацию @Security, чтобы проверить, что пользователь аутентифицирован и активен. Например:

use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentSecurityCoreExceptionAccessDeniedException;
use SensioBundleFrameworkExtraBundleConfigurationSecurity;

class MyController extends AbstractController
{
    /**
     * @Route("/my-page")
     * @Security("is_granted('ROLE_USER') and user.isActive()")
     */
    public function myPage()
    {
        // Ваш код для генерации страницы
    }
}

Метод isActive() можно определить в вашем классе пользователя (класс, который реализует UserInterface). Он должен возвращать true, если пользователь активен, и false, если пользователь удален или неактивен.

Если пользователь удален или неактивен, Symfony автоматически вызывает исключение AccessDeniedException, которое перенаправляет пользователя на страницу ошибки доступа (обычно страницу с кодом 403).

Второй способ - это использование событий Symfony для проверки наличия пользователя при загрузке страницы. Вы можете подписаться на событие kernel.request и выполнять проверку наличия пользователя перед каждым запросом страницы. Например:

use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentSecurityCoreExceptionAccessDeniedException;
use SymfonyComponentHttpKernelEventRequestEvent;
use SymfonyComponentHttpKernelKernelEvents;

class UserSubscriber implements EventSubscriberInterface
{
    public function onKernelRequest(RequestEvent $event)
    {
        $request = $event->getRequest();

        // Проверка наличия пользователя
        if (!$this->getUser() || !$this->getUser()->isActive()) {
            throw new AccessDeniedException('Доступ запрещен');
        }
    }

    public static function getSubscribedEvents()
    {
        return [
            KernelEvents::REQUEST => 'onKernelRequest',
        ];
    }
}

Затем зарегистрируйте данный UserSubscriber в файле services.yaml или в файле конфигурации вашего приложения:

AppEventListenerUserSubscriber:
    tags:
        - { name: kernel.event_subscriber }

Таким образом, при каждом запросе страницы Symfony будет автоматически выполнять проверку наличия пользователя и вызывать исключение AccessDeniedException, если пользователь удален или неактивен.

При использовании любого из этих способов вы можете перенаправить пользователя на другую страницу или показать сообщение об ошибке, в зависимости от ваших требований.