Skip to content
Snippets Groups Projects

Update file OpenAIEventSubscriber.php for redirecting user to setting page when API key is not present, before it was thowing error

Open Harpreet Singh requested to merge issue/openai-3446821:3446821-getting-an-error into 1.0.x
1 file
+ 22
9
Compare changes
  • Side-by-side
  • Inline
@@ -6,9 +6,12 @@ namespace Drupal\openai\EventSubscriber;
@@ -6,9 +6,12 @@ namespace Drupal\openai\EventSubscriber;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Drupal\Core\Messenger\MessengerInterface;
 
use Drupal\Core\Routing\RouteMatch;
 
use Drupal\Core\Url;
use Drupal\Core\Routing\AdminContext;
use Drupal\Core\Routing\AdminContext;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\KernelEvents;
@@ -33,16 +36,26 @@ final class OpenAIEventSubscriber implements EventSubscriberInterface {
@@ -33,16 +36,26 @@ final class OpenAIEventSubscriber implements EventSubscriberInterface {
*/
*/
public function onKernelRequest(RequestEvent $event): void {
public function onKernelRequest(RequestEvent $event): void {
$config = $this->configFactory->get('openai.settings');
$config = $this->configFactory->get('openai.settings');
 
 
$route_name = RouteMatch::createFromRequest($event->getRequest())
 
->getRouteName();
 
if($route_name == 'openai_chatgpt.chat_form' || $route_name == 'openai_dalle.dalle_form' || $route_name == 'openai_dblog.settings' || $route_name == 'openai_prompt.prompt_form' || $route_name == 'openai_tts.tts_form' ){
 
if ($this->adminContext->isAdminRoute() && empty($config->get('api_key'))) {
 
$message = $this->t('You have not provided an OpenAI API key yet. This is required for its functionality to work. Please obtain an API key from <a href=":account">your OpenAI account</a> and add it to the <a href=":settings">OpenAI settings configuration here</a>.',
 
[
 
':account' => 'https://platform.openai.com/',
 
':settings' => '/admin/config/openai/settings'
 
],
 
);
if ($this->adminContext->isAdminRoute() && empty($config->get('api_key'))) {
$this->messenger->addError($message);
$message = $this->t('You have not provided an OpenAI API key yet. This is required for its functionality to work. Please obtain an API key from <a href=":account">your OpenAI account</a> and add it to the <a href=":settings">OpenAI settings configuration here</a>.',
$redirect_url = Url::fromRoute('openai.api_settings', [], [
[
'absolute' => TRUE,
':account' => 'https://platform.openai.com/',
]);
':settings' => '/admin/config/openai/settings'
if ($redirect_url) {
],
$event->setResponse(new RedirectResponse($redirect_url->toString()));
);
}
}
$this->messenger->addError($message);
}
}
}
}
Loading