From d8492ea6f338789f8d9f9482dc5f399e6d07da2b Mon Sep 17 00:00:00 2001 From: Marc Kreidler Date: Thu, 11 Sep 2025 16:12:42 +0200 Subject: [PATCH] Adapt Buerklin InfoProvider to new Settings mechanism --- config/packages/knpu_oauth2_client.yaml | 6 +- .../InfoProviderSystem/BuerklinSettings.php | 82 +++++++++++++++++++ .../InfoProviderSettings.php | 3 + 3 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 src/Settings/InfoProviderSystem/BuerklinSettings.php diff --git a/config/packages/knpu_oauth2_client.yaml b/config/packages/knpu_oauth2_client.yaml index 6e0698c0..c9bf3ee3 100644 --- a/config/packages/knpu_oauth2_client.yaml +++ b/config/packages/knpu_oauth2_client.yaml @@ -41,13 +41,13 @@ knpu_oauth2_client: type: generic provider_class: '\League\OAuth2\Client\Provider\GenericProvider' - client_id: '%env(PROVIDER_BUERKLIN_CLIENT_ID)%' - client_secret: '%env(PROVIDER_BUERKLIN_SECRET)%' + client_id: '%env(settings:buerklin:clientId)%' + client_secret: '%env(settings:buerklin:secret)%' redirect_route: 'oauth_client_check' redirect_params: { name: 'ip_buerklin_oauth' } provider_options: - urlAuthorize: 'https://www.buerklin.com/authorizationserver/oauth/token' + urlAuthorize: 'https://www.buerklin.com/authorizationserver/oauth/authorize' urlAccessToken: 'https://www.buerklin.com/authorizationserver/oauth/token' urlResourceOwnerDetails: '' diff --git a/src/Settings/InfoProviderSystem/BuerklinSettings.php b/src/Settings/InfoProviderSystem/BuerklinSettings.php new file mode 100644 index 00000000..56278301 --- /dev/null +++ b/src/Settings/InfoProviderSystem/BuerklinSettings.php @@ -0,0 +1,82 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Settings\InfoProviderSystem; + +use App\Form\Type\APIKeyType; +use App\Settings\SettingsIcon; +use Jbtronics\SettingsBundle\Metadata\EnvVarMode; +use Jbtronics\SettingsBundle\Settings\Settings; +use Jbtronics\SettingsBundle\Settings\SettingsTrait; +use Symfony\Component\Form\Extension\Core\Type\CountryType; +use Symfony\Component\Form\Extension\Core\Type\CurrencyType; +use Symfony\Component\Form\Extension\Core\Type\LanguageType; +use Symfony\Component\Translation\TranslatableMessage as TM; +use Jbtronics\SettingsBundle\Settings\SettingsParameter; +use Symfony\Component\Validator\Constraints as Assert; + +#[Settings(label: new TM("settings.ips.buerklin"))] +#[SettingsIcon("fa-plug")] +class BuerklinSettings +{ + use SettingsTrait; + + #[SettingsParameter( + label: new TM("settings.ips.buerklin.client_id"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_CLIENT_ID", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $clientId = null; + + #[SettingsParameter( + label: new TM("settings.ips.buerklin.secret"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_SECRET", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $secret = null; + + #[SettingsParameter( + label: new TM("settings.ips.buerklin.username"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_USER", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $username = null; + + #[SettingsParameter( + label: new TM("settings.ips.buerklin.password"), + formType: APIKeyType::class, + envVar: "PROVIDER_BUERKLIN_PASSWORD", envVarMode: EnvVarMode::OVERWRITE + )] + public ?string $password = null; + + #[SettingsParameter(label: new TM("settings.ips.buerklin.currency"), formType: CurrencyType::class, + formOptions: ["preferred_choices" => ["EUR", "USD", "CHF", "GBP"]], + envVar: "PROVIDER_BUERKLIN_CURRENCY", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Currency()] + public string $currency = "EUR"; + + #[SettingsParameter(label: new TM("settings.ips.buerklin.language"), formType: LanguageType::class, + envVar: "PROVIDER_BUERKLIN_LANGUAGE", envVarMode: EnvVarMode::OVERWRITE)] + #[Assert\Language] + public string $language = "en"; +} diff --git a/src/Settings/InfoProviderSystem/InfoProviderSettings.php b/src/Settings/InfoProviderSystem/InfoProviderSettings.php index c223bd88..c686481a 100644 --- a/src/Settings/InfoProviderSystem/InfoProviderSettings.php +++ b/src/Settings/InfoProviderSystem/InfoProviderSettings.php @@ -62,4 +62,7 @@ class InfoProviderSettings #[EmbeddedSettings] public ?PollinSettings $pollin = null; + + #[EmbeddedSettings] + public ?BuerklinSettings $buerklin = null; }