<?php
declare(strict_types=1);
namespace App\OpenAI\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Security;
class OpenAIApiSubscriber implements EventSubscriberInterface
{
public function __construct(private readonly Security $security)
{
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::REQUEST => 'onKernelRequest',
];
}
public function onKernelRequest(RequestEvent $requestEvent): void
{
$request = $requestEvent->getRequest();
$path = $request->getPathInfo();
/** @var \App\Entity\Usuario $user */
$user = $this->security->getUser();
if (\str_starts_with($path, '/api/openai')) {
if (!$user){
throw new \LogicException('You must be logged in to use the OpenAI API');
}
if (!$user->isVirtualAssistantActive()){
throw new \LogicException('You do not have the virtual assistant active');
}
}
}
}