From 5c5fa8fde2ec86c9dcf8d89d092235fe982a1d9f Mon Sep 17 00:00:00 2001 From: Brock H Caldwell Date: Mon, 7 Jul 2025 00:14:22 -0500 Subject: [PATCH] fix: displays warning if reald debrid or tmdb keys are missing --- assets/styles/app.css | 2 +- config/services.yaml | 9 ++++ src/Base/ConfigResolver.php | 49 +++++++++++++++++++ .../Controller/Web/PreferencesController.php | 3 +- .../EventListener/LoginSuccessListener.php | 18 ++++++- templates/components/Alert.html.twig | 15 +----- templates/components/Header.html.twig | 5 +- 7 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 src/Base/ConfigResolver.php diff --git a/assets/styles/app.css b/assets/styles/app.css index 2ff5d77..0294b53 100644 --- a/assets/styles/app.css +++ b/assets/styles/app.css @@ -23,7 +23,7 @@ @apply bg-green-950 hover:bg-green-900 border-green-500 } .alert-warning { - @apply bg-yellow-500/70 hover:bg-yellow-600 border-yellow-400 text-black + @apply bg-yellow-500 hover:bg-yellow-600 border-yellow-400 text-black } } diff --git a/config/services.yaml b/config/services.yaml index 29d8d2d..f44dc32 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -4,6 +4,15 @@ # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration parameters: + # App + app.url: '%env(APP_URL)%' + + # Debrid Services + app.debrid.real_debrid.key: '%env(REAL_DEBRID_KEY)%' + + # TMDB Key + app.meta_provider.tmdb.key: '%env(TMDB_API)%' + # Media media.base_path: '/var/download' media.default_movies_dir: movies diff --git a/src/Base/ConfigResolver.php b/src/Base/ConfigResolver.php new file mode 100644 index 0000000..28ccc8f --- /dev/null +++ b/src/Base/ConfigResolver.php @@ -0,0 +1,49 @@ +realDebridApiKey || "" === $this->realDebridApiKey) { + $this->messages[] = "Your Real Debrid API key is missing. Please set it to the 'REAL_DEBRID_KEY' environment variable."; + $valid = false; + } + + if (null === $this->tmdbApiKey || "" === $this->tmdbApiKey) { + $this->messages[] = "Your TMDB API key is missing. Please set it to the 'TMDB_API' environment variable."; + $valid = false; + } + + return $valid; + } + + public function getMessages(): array + { + return $this->messages; + } +} diff --git a/src/User/Framework/Controller/Web/PreferencesController.php b/src/User/Framework/Controller/Web/PreferencesController.php index 8edbbb1..beaf538 100644 --- a/src/User/Framework/Controller/Web/PreferencesController.php +++ b/src/User/Framework/Controller/Web/PreferencesController.php @@ -98,7 +98,8 @@ class PreferencesController extends AbstractController [ 'preferences' => $this->preferencesRepository->findEnabled(), 'languages' => $languages, - 'providers' => ProviderList::$providers, + 'providers' => ProviderList::getProviders(), + 'qualities' => QualityList::getBaseQualities(), 'mediaPreferences' => $mediaPreferences, 'downloadPreferences' => $downloadPreferences, ] diff --git a/src/User/Framework/EventListener/LoginSuccessListener.php b/src/User/Framework/EventListener/LoginSuccessListener.php index 64d856c..3d249de 100644 --- a/src/User/Framework/EventListener/LoginSuccessListener.php +++ b/src/User/Framework/EventListener/LoginSuccessListener.php @@ -2,6 +2,8 @@ namespace App\User\Framework\EventListener; +use App\Base\ConfigResolver; +use App\Base\Util\Broadcaster; use Symfony\Component\EventDispatcher\Attribute\AsEventListener; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Security\Core\Event\AuthenticationSuccessEvent; @@ -10,12 +12,26 @@ final class LoginSuccessListener { public function __construct( private readonly RequestStack $requestStack, + private readonly ConfigResolver $configResolver, + private readonly Broadcaster $broadcaster, ) {} - #[AsEventListener(event: 'security.authentication.success')] + #[AsEventListener(event: 'security.authentication.success', priority: 20)] public function setMercureTopics(AuthenticationSuccessEvent $event): void { // Set the unique Mercure topic name for the User's alerts $this->requestStack->getSession()->set('mercure_alert_topic', 'alerts_' . uniqid()); } + + #[AsEventListener(event: 'security.authentication.success', priority: 10)] + public function validateConfig(AuthenticationSuccessEvent $event): void + { + // Set the unique Mercure topic name for the User's alerts + $valid = $this->configResolver->validate(); + if (false === $valid) { + foreach ($this->configResolver->getMessages() as $message) { + $this->requestStack->getSession()->getFlashBag()->add('warning', $message); + } + } + } } diff --git a/templates/components/Alert.html.twig b/templates/components/Alert.html.twig index 438855a..bba739e 100644 --- a/templates/components/Alert.html.twig +++ b/templates/components/Alert.html.twig @@ -7,20 +7,9 @@ Info -

{{ title|default('') }}

+

{{ title|default('') }}

-
+
{{ message }}
-{#
#} -{# #} -{# #} -{#
#} \ No newline at end of file diff --git a/templates/components/Header.html.twig b/templates/components/Header.html.twig index 4a6fee6..e252d41 100644 --- a/templates/components/Header.html.twig +++ b/templates/components/Header.html.twig @@ -28,7 +28,10 @@
-
    +
      + {% for message in app.flashes('warning') %} + + {% endfor %}