From 1964c27043c31b6f6b83dcb4ba7fdd96ff03dd2b Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Wed, 22 Jan 2025 14:58:56 +0100 Subject: [PATCH 01/14] Updated Digital post command --- .../os2forms_digital_post/drush.services.yml | 10 ---------- .../Commands/DigitalPostTestCommands.php | 17 +++++++++++++++-- 2 files changed, 15 insertions(+), 12 deletions(-) delete mode 100644 modules/os2forms_digital_post/drush.services.yml rename modules/os2forms_digital_post/src/{ => Drush}/Commands/DigitalPostTestCommands.php (91%) diff --git a/modules/os2forms_digital_post/drush.services.yml b/modules/os2forms_digital_post/drush.services.yml deleted file mode 100644 index 7339bc2..0000000 --- a/modules/os2forms_digital_post/drush.services.yml +++ /dev/null @@ -1,10 +0,0 @@ -services: - os2forms_digital_post.commands: - class: \Drupal\os2forms_digital_post\Commands\DigitalPostTestCommands - arguments: - - '@Drupal\os2forms_digital_post\Helper\DigitalPostHelper' - - '@token' - - '@plugin.manager.entity_print.print_engine' - - '@Drupal\os2forms_digital_post\Helper\Settings' - tags: - - { name: drush.command } diff --git a/modules/os2forms_digital_post/src/Commands/DigitalPostTestCommands.php b/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php similarity index 91% rename from modules/os2forms_digital_post/src/Commands/DigitalPostTestCommands.php rename to modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php index 5e9bdbb..26d65fa 100644 --- a/modules/os2forms_digital_post/src/Commands/DigitalPostTestCommands.php +++ b/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php @@ -1,6 +1,6 @@ get(DigitalPostHelper::class), + $container->get('token'), + $container->get('plugin.manager.entity_print.print_engine'), + $container->get(Settings::class), + ); + } + /** * Send digital post. * From c58ec55c6139ae9187bbbe1bf30bee4a92549b12 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Wed, 22 Jan 2025 15:55:09 +0100 Subject: [PATCH 02/14] Coding standards --- .../src/Drush/Commands/DigitalPostTestCommands.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php b/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php index 26d65fa..759c8e2 100644 --- a/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php +++ b/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php @@ -34,7 +34,7 @@ public function __construct( /** * {@inheritdoc} */ - public static function create(ContainerInterface $container) { + public static function create(ContainerInterface $container): self { return new static( $container->get(DigitalPostHelper::class), $container->get('token'), From 0404c5ccc1b9058006baa39321dfd42d1cb97f71 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Wed, 22 Jan 2025 22:54:56 +0100 Subject: [PATCH 03/14] Used Autowire trait --- .../Drush/Commands/DigitalPostTestCommands.php | 17 ++++------------- .../src/Drush/Commands/FasitTestCommand.php | 12 ++---------- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php b/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php index 759c8e2..6b23d87 100644 --- a/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php +++ b/modules/os2forms_digital_post/src/Drush/Commands/DigitalPostTestCommands.php @@ -3,6 +3,7 @@ namespace Drupal\os2forms_digital_post\Drush\Commands; use Drupal\Component\Serialization\Yaml; +use Drupal\Core\DependencyInjection\AutowireTrait; use Drupal\Core\Utility\Token; use Drupal\entity_print\Plugin\EntityPrintPluginManagerInterface; use Drupal\os2forms_digital_post\Helper\DigitalPostHelper; @@ -12,13 +13,14 @@ use ItkDev\Serviceplatformen\Service\SF1601\SF1601; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Contracts\HttpClient\Exception\ClientExceptionInterface; /** * Test commands for digital post. */ final class DigitalPostTestCommands extends DrushCommands { + use AutowireTrait; /** * Constructor. @@ -26,23 +28,12 @@ final class DigitalPostTestCommands extends DrushCommands { public function __construct( private readonly DigitalPostHelper $digitalPostHelper, private readonly Token $token, + #[Autowire(service: 'plugin.manager.entity_print.print_engine')] private readonly EntityPrintPluginManagerInterface $entityPrintPluginManager, private readonly Settings $digitalPostSettings, ) { } - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container): self { - return new static( - $container->get(DigitalPostHelper::class), - $container->get('token'), - $container->get('plugin.manager.entity_print.print_engine'), - $container->get(Settings::class), - ); - } - /** * Send digital post. * diff --git a/modules/os2forms_fasit/src/Drush/Commands/FasitTestCommand.php b/modules/os2forms_fasit/src/Drush/Commands/FasitTestCommand.php index 586adc0..9d1fb28 100644 --- a/modules/os2forms_fasit/src/Drush/Commands/FasitTestCommand.php +++ b/modules/os2forms_fasit/src/Drush/Commands/FasitTestCommand.php @@ -2,14 +2,15 @@ namespace Drupal\os2forms_fasit\Drush\Commands; +use Drupal\Core\DependencyInjection\AutowireTrait; use Drupal\os2forms_fasit\Helper\FasitHelper; use Drush\Commands\DrushCommands; -use Symfony\Component\DependencyInjection\ContainerInterface; /** * A Drush commandfile. */ final class FasitTestCommand extends DrushCommands { + use AutowireTrait; /** * Constructs a FasitTestCommand object. @@ -20,15 +21,6 @@ public function __construct( parent::__construct(); } - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container) { - return new static( - $container->get(FasitHelper::class), - ); - } - /** * Test API access. * From d8c7c2e7881800f785db347fda7e352d1d5002a3 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Thu, 23 Jan 2025 14:14:08 +0100 Subject: [PATCH 04/14] Updated digital post module to allow key and old configuration methods --- CHANGELOG.md | 2 + .../os2forms_digital_post.services.yml | 1 + .../src/Form/SettingsForm.php | 187 +++++++++++++++++- .../src/Helper/CertificateLocatorHelper.php | 88 +++++++++ .../src/Helper/DigitalPostHelper.php | 18 +- .../src/Helper/Settings.php | 10 + 6 files changed, 293 insertions(+), 13 deletions(-) create mode 100644 modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php diff --git a/CHANGELOG.md b/CHANGELOG.md index e849be6..d6fbf37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ before starting to add changes. Use example [placed in the end of the page](#exa - [#101](https://github.com/OS2Forms/os2forms/pull/101) - Added support for `os2web_key` in Digital post + - Switched from saving settings in key value store to config, i.e + the module needs to be reconfigured. - Added support for `os2web_key` in Fasit handler. - Switched from saving settings in key value store to config, i.e the module needs to be reconfigured. diff --git a/modules/os2forms_digital_post/os2forms_digital_post.services.yml b/modules/os2forms_digital_post/os2forms_digital_post.services.yml index 9b096fa..993a720 100644 --- a/modules/os2forms_digital_post/os2forms_digital_post.services.yml +++ b/modules/os2forms_digital_post/os2forms_digital_post.services.yml @@ -37,6 +37,7 @@ services: - "@Drupal\\os2forms_digital_post\\Helper\\MeMoHelper" - "@Drupal\\os2forms_digital_post\\Helper\\ForsendelseHelper" - "@Drupal\\os2forms_digital_post\\Helper\\BeskedfordelerHelper" + - "@Drupal\\os2forms_digital_post\\Helper\\CertificateLocatorHelper" - "@logger.channel.os2forms_digital_post" - "@logger.channel.os2forms_digital_post_submission" - "@os2web_audit.logger" diff --git a/modules/os2forms_digital_post/src/Form/SettingsForm.php b/modules/os2forms_digital_post/src/Form/SettingsForm.php index b91e2ed..5bfb04f 100644 --- a/modules/os2forms_digital_post/src/Form/SettingsForm.php +++ b/modules/os2forms_digital_post/src/Form/SettingsForm.php @@ -11,6 +11,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait; use Drupal\Core\StringTranslation\TranslatableMarkup; use Drupal\Core\Url; +use Drupal\os2forms_digital_post\Helper\CertificateLocatorHelper; use Drupal\os2forms_digital_post\Helper\Settings; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -34,6 +35,7 @@ public function __construct( ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entityTypeManager, private readonly Settings $settings, + private readonly CertificateLocatorHelper $certificateLocatorHelper, ) { parent::__construct($config_factory); $this->queueStorage = $entityTypeManager->getStorage('advancedqueue_queue'); @@ -49,6 +51,7 @@ public static function create(ContainerInterface $container) { $container->get('config.factory'), $container->get('entity_type.manager'), $container->get(Settings::class), + $container->get(CertificateLocatorHelper::class), ); } @@ -134,17 +137,127 @@ public function buildForm(array $form, FormStateInterface $form_state): array { '#type' => 'fieldset', '#title' => $this->t('Certificate'), '#tree' => TRUE, + ]; + + $form[Settings::CERTIFICATE][Settings::CERTIFICATE_PROVIDER] = [ + '#type' => 'select', + '#title' => $this->t('Provider'), + '#options' => [ + Settings::PROVIDER_TYPE_FORM => $this->t('Form'), + Settings::PROVIDER_TYPE_KEY => $this->t('Key'), + ], + '#default_value' => $this->settings->getEditableValue([Settings::CERTIFICATE, Settings::CERTIFICATE_PROVIDER]) ?? Settings::PROVIDER_TYPE_FORM, + '#description' => $this->t('Specifies which provider to use'), + ]; + + $form[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_TYPE] = [ + '#type' => 'select', + '#title' => $this->t('Certificate locator type'), + '#options' => [ + CertificateLocatorHelper::LOCATOR_TYPE_AZURE_KEY_VAULT => $this->t('Azure key vault'), + CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM => $this->t('File system'), + ], + '#default_value' => $this->settings->getEditableValue([ + Settings::CERTIFICATE, + CertificateLocatorHelper::LOCATOR_TYPE, + ]) ?? NULL, + '#states' => [ + 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM]], + ], + '#description' => $this->t('Specifies which locator to use'), + ]; - Settings::KEY => [ - '#type' => 'key_select', - '#key_filters' => [ - 'type' => 'os2web_key_certificate', + $form[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_TYPE_AZURE_KEY_VAULT] = [ + '#type' => 'fieldset', + '#title' => $this->t('Azure key vault'), + '#states' => [ + 'visible' => [ + ':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM], + ':input[name="certificate[locator_type]"]' => ['value' => CertificateLocatorHelper::LOCATOR_TYPE_AZURE_KEY_VAULT], + ], + ], + ]; + + $settings = [ + CertificateLocatorHelper::LOCATOR_AZURE_KEY_VAULT_TENANT_ID => ['title' => $this->t('Tenant id')], + CertificateLocatorHelper::LOCATOR_AZURE_KEY_VAULT_APPLICATION_ID => ['title' => $this->t('Application id')], + CertificateLocatorHelper::LOCATOR_AZURE_KEY_VAULT_CLIENT_SECRET => ['title' => $this->t('Client secret')], + CertificateLocatorHelper::LOCATOR_AZURE_KEY_VAULT_NAME => ['title' => $this->t('Name')], + CertificateLocatorHelper::LOCATOR_AZURE_KEY_VAULT_SECRET => ['title' => $this->t('Secret')], + CertificateLocatorHelper::LOCATOR_AZURE_KEY_VAULT_VERSION => ['title' => $this->t('Version')], + ]; + + foreach ($settings as $key => $info) { + $form[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_TYPE_AZURE_KEY_VAULT][$key] = [ + '#type' => 'textfield', + '#title' => $info['title'], + '#default_value' => $this->settings->getEditableValue([ + Settings::CERTIFICATE, + CertificateLocatorHelper::LOCATOR_TYPE_AZURE_KEY_VAULT, + $key, + ]) ?? NULL, + '#states' => [ + 'required' => [ + ':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM], + ':input[name="certificate[locator_type]"]' => ['value' => CertificateLocatorHelper::LOCATOR_TYPE_AZURE_KEY_VAULT], + ], + ], + ]; + } + + $form[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM] = [ + '#type' => 'fieldset', + '#title' => $this->t('File system'), + '#states' => [ + 'visible' => [ + ':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM], + ':input[name="certificate[locator_type]"]' => ['value' => CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM], + ], + ], + + CertificateLocatorHelper::LOCATOR_FILE_SYSTEM_PATH => [ + '#type' => 'textfield', + '#title' => $this->t('Path'), + '#default_value' => $this->settings->getEditableValue([ + Settings::CERTIFICATE, + CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM, + CertificateLocatorHelper::LOCATOR_FILE_SYSTEM_PATH, + ]) ?? NULL, + '#states' => [ + 'required' => [ + ':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM], + ':input[name="certificate[locator_type]"]' => ['value' => CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM], + ], ], - '#key_description' => FALSE, - '#title' => $this->t('Key'), - '#default_value' => $this->settings->getEditableValue([Settings::CERTIFICATE, Settings::KEY]), - '#required' => TRUE, - '#description' => $this->createDescription([Settings::CERTIFICATE, Settings::KEY]), + ], + ]; + + $form[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_PASSPHRASE] = [ + '#type' => 'textfield', + '#title' => $this->t('Passphrase'), + '#default_value' => $this->settings->getEditableValue([ + Settings::CERTIFICATE, + CertificateLocatorHelper::LOCATOR_PASSPHRASE, + ]) ?? '', + '#states' => [ + 'visible' => [ + ':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM], + ], + ], + ]; + + $form[Settings::CERTIFICATE][Settings::PROVIDER_TYPE_KEY] = [ + '#type' => 'key_select', + '#key_filters' => [ + 'type' => 'os2web_key_certificate', + ], + '#key_description' => FALSE, + '#title' => $this->t('Key'), + '#default_value' => $this->settings->getEditableValue([Settings::CERTIFICATE, Settings::PROVIDER_TYPE_KEY]), + '#required' => TRUE, + '#description' => $this->createDescription([Settings::CERTIFICATE, Settings::PROVIDER_TYPE_KEY]), + '#states' => [ + 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_KEY]], ], ]; @@ -176,15 +289,55 @@ public function buildForm(array $form, FormStateInterface $form_state): array { ), ]; + $form['actions']['testCertificate'] = [ + '#type' => 'submit', + '#name' => 'testCertificate', + '#value' => $this->t('Test certificate'), + '#states' => [ + 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM]], + ], + ]; + return $form; } + /** + * {@inheritdoc} + * + * @phpstan-param array $form + */ + public function validateForm(array &$form, FormStateInterface $form_state): void { + $triggeringElement = $form_state->getTriggeringElement(); + if ('testCertificate' === ($triggeringElement['#name'] ?? NULL)) { + return; + } + + $values = $form_state->getValues(); + + if (Settings::PROVIDER_TYPE_FORM === $values[Settings::CERTIFICATE][Settings::CERTIFICATE_PROVIDER]) { + if (CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM === $values[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_TYPE]) { + $path = $values[Settings::CERTIFICATE][CertificateLocatorHelper::LOCATOR_TYPE_FILE_SYSTEM][CertificateLocatorHelper::LOCATOR_FILE_SYSTEM_PATH] ?? NULL; + if (!file_exists($path)) { + $form_state->setErrorByName('certificate][file_system][path', $this->t('Invalid certificate path: %path', ['%path' => $path])); + } + } + } + + parent::validateForm($form, $form_state); + } + /** * {@inheritdoc} * * @phpstan-param array $form */ public function submitForm(array &$form, FormStateInterface $form_state): void { + $triggeringElement = $form_state->getTriggeringElement(); + if ('testCertificate' === ($triggeringElement['#name'] ?? NULL)) { + $this->testCertificate(); + return; + } + $config = $this->config(Settings::CONFIG_NAME); foreach ([ Settings::TEST_MODE, @@ -223,4 +376,20 @@ private function createDescription(string|array $key, ?TranslatableMarkup $descr return (string) $description; } + /** + * Test certificate. + */ + private function testCertificate(): void { + try { + + $certificateLocator = $this->certificateLocatorHelper->getCertificateLocator(); + $certificateLocator->getCertificates(); + $this->messenger()->addStatus($this->t('Certificate succesfully tested')); + } + catch (\Throwable $throwable) { + $message = $this->t('Error testing certificate: %message', ['%message' => $throwable->getMessage()]); + $this->messenger()->addError($message); + } + } + } diff --git a/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php b/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php new file mode 100644 index 0000000..14710b9 --- /dev/null +++ b/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php @@ -0,0 +1,88 @@ +settings->getEditableValue(Settings::CERTIFICATE); + + $locatorType = $certificateSettings['locator_type']; + $options = $certificateSettings[$locatorType]; + $options += [ + 'passphrase' => $certificateSettings['passphrase'] ?: '', + ]; + + if (self::LOCATOR_TYPE_AZURE_KEY_VAULT === $locatorType) { + $httpClient = new GuzzleAdapter(new Client()); + $requestFactory = new RequestFactory(); + + $vaultToken = new VaultToken($httpClient, $requestFactory); + + $token = $vaultToken->getToken( + $options['tenant_id'], + $options['application_id'], + $options['client_secret'], + ); + + $vault = new VaultSecret( + $httpClient, + $requestFactory, + $options['name'], + $token->getAccessToken() + ); + + return new AzureKeyVaultCertificateLocator( + $vault, + $options['secret'], + $options['version'], + $options['passphrase'], + ); + } + elseif (self::LOCATOR_TYPE_FILE_SYSTEM === $locatorType) { + $certificatepath = realpath($options['path']) ?: NULL; + if (NULL === $certificatepath) { + throw new CertificateLocatorException(sprintf('Invalid certificate path %s', $options['path'])); + } + return new FilesystemCertificateLocator($certificatepath, $options['passphrase']); + } + + throw new CertificateLocatorException(sprintf('Invalid certificate locator type: %s', $locatorType)); + } + +} diff --git a/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php b/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php index 80825df..d2f2af6 100644 --- a/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php +++ b/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php @@ -35,6 +35,7 @@ public function __construct( private readonly MeMoHelper $meMoHelper, private readonly ForsendelseHelper $forsendelseHelper, private readonly BeskedfordelerHelper $beskedfordelerHelper, + private readonly CertificateLocatorHelper $certificateLocatorHelper, private readonly LoggerChannelInterface $logger, private readonly LoggerChannelInterface $submissionLogger, private readonly Logger $auditLogger, @@ -60,14 +61,23 @@ public function __construct( */ public function sendDigitalPost(string $type, Message $message, ?ForsendelseI $forsendelse, ?WebformSubmissionInterface $submission = NULL): array { $senderSettings = $this->settings->getSender(); + + if (Settings::PROVIDER_TYPE_FORM === $this->settings->getCertificateProvider()) { + $certificateLocator = $this->certificateLocatorHelper->getCertificateLocator(); + } + else { + $certificateLocator = new KeyCertificateLocator( + $this->settings->getCertificateKey(), + $this->keyHelper + ); + } + $options = [ 'test_mode' => (bool) $this->settings->getTestMode(), 'authority_cvr' => $senderSettings[Settings::SENDER_IDENTIFIER], - 'certificate_locator' => new KeyCertificateLocator( - $this->settings->getCertificateKey(), - $this->keyHelper - ), + 'certificate_locator' => $certificateLocator, ]; + $service = new SF1601($options); $transactionId = Serializer::createUuid(); diff --git a/modules/os2forms_digital_post/src/Helper/Settings.php b/modules/os2forms_digital_post/src/Helper/Settings.php index c0d5384..176749b 100644 --- a/modules/os2forms_digital_post/src/Helper/Settings.php +++ b/modules/os2forms_digital_post/src/Helper/Settings.php @@ -23,6 +23,9 @@ final class Settings { public const CERTIFICATE = 'certificate'; public const KEY = 'key'; + public const CERTIFICATE_PROVIDER = 'certificate_provider'; + public const PROVIDER_TYPE_FORM = 'form'; + public const PROVIDER_TYPE_KEY = 'key'; public const PROCESSING = 'processing'; public const QUEUE = 'queue'; @@ -70,6 +73,13 @@ public function getSender(): array { return is_array($value) ? $value : []; } + /** + * Get certificate provider. + */ + public function getCertificateProvider(): ?string { + return $this->get([self::CERTIFICATE, self::CERTIFICATE_PROVIDER]); + } + /** * Get key. */ From b0b898dc3fdcaa35a7e4207acab8bd6668f4134c Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Thu, 23 Jan 2025 14:52:27 +0100 Subject: [PATCH 05/14] Service cleanup using autowire --- .../os2forms_digital_post.services.yml | 54 +++++-------------- .../BeskedfordelerEventSubscriber.php | 2 + .../src/Form/SettingsForm.php | 38 ------------- .../src/Helper/BeskedfordelerHelper.php | 2 + .../src/Helper/DigitalPostHelper.php | 5 ++ .../src/Helper/Settings.php | 2 + .../src/Helper/WebformHelperSF1601.php | 4 ++ 7 files changed, 27 insertions(+), 80 deletions(-) diff --git a/modules/os2forms_digital_post/os2forms_digital_post.services.yml b/modules/os2forms_digital_post/os2forms_digital_post.services.yml index 993a720..ed03ea3 100644 --- a/modules/os2forms_digital_post/os2forms_digital_post.services.yml +++ b/modules/os2forms_digital_post/os2forms_digital_post.services.yml @@ -8,65 +8,35 @@ services: arguments: [ 'webform_submission' ] Drupal\os2forms_digital_post\Helper\Settings: - arguments: - - "@config.factory" - - "@key.repository" + autowire: true Drupal\os2forms_digital_post\Helper\CertificateLocatorHelper: - arguments: - - "@Drupal\\os2forms_digital_post\\Helper\\Settings" - - "@key.repository" + autowire: true Drupal\os2forms_digital_post\Helper\MeMoHelper: + autowire: true arguments: - - "@Drupal\\os2forms_digital_post\\Helper\\Settings" - - "@plugin.manager.element_info" - - "@webform.token_manager" + $elementInfoManager: "@plugin.manager.element_info" + $webformTokenManager: "@webform.token_manager" Drupal\os2forms_digital_post\Helper\ForsendelseHelper: + autowire: true arguments: - - "@Drupal\\os2forms_digital_post\\Helper\\Settings" - - "@plugin.manager.element_info" - - "@webform.token_manager" + $elementInfoManager: "@plugin.manager.element_info" + $webformTokenManager: "@webform.token_manager" Drupal\os2forms_digital_post\Helper\DigitalPostHelper: - arguments: - - "@Drupal\\os2forms_digital_post\\Helper\\Settings" - - "@Drupal\\os2web_key\\KeyHelper" - - "@plugin.manager.os2web_datalookup" - - "@Drupal\\os2forms_digital_post\\Helper\\MeMoHelper" - - "@Drupal\\os2forms_digital_post\\Helper\\ForsendelseHelper" - - "@Drupal\\os2forms_digital_post\\Helper\\BeskedfordelerHelper" - - "@Drupal\\os2forms_digital_post\\Helper\\CertificateLocatorHelper" - - "@logger.channel.os2forms_digital_post" - - "@logger.channel.os2forms_digital_post_submission" - - "@os2web_audit.logger" + autowire: true Drupal\os2forms_digital_post\Helper\WebformHelperSF1601: - arguments: - - "@Drupal\\os2forms_digital_post\\Helper\\Settings" - - "@entity_type.manager" - - "@plugin.manager.os2web_datalookup" - - "@Drupal\\os2forms_digital_post\\Helper\\MeMoHelper" - - "@Drupal\\os2forms_digital_post\\Helper\\ForsendelseHelper" - - "@Drupal\\os2forms_digital_post\\Helper\\BeskedfordelerHelper" - - "@logger.channel.os2forms_digital_post" - - "@logger.channel.os2forms_digital_post_submission" - - "@Drupal\\os2forms_digital_post\\Helper\\DigitalPostHelper" + autowire: true Drupal\os2forms_digital_post\Helper\SF1461Helper: Drupal\os2forms_digital_post\EventSubscriber\BeskedfordelerEventSubscriber: - arguments: - - '@Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper' - - '@Drupal\beskedfordeler\Helper\MessageHelper' - - '@Drupal\os2forms_digital_post\Helper\WebformHelperSF1601' - - '@logger.channel.os2forms_digital_post' + autowire: true tags: - { name: 'event_subscriber' } Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper: - arguments: - - '@database' - - '@Drupal\os2forms_digital_post\Helper\MeMoHelper' - - '@logger.channel.os2forms_digital_post' + autowire: true diff --git a/modules/os2forms_digital_post/src/EventSubscriber/BeskedfordelerEventSubscriber.php b/modules/os2forms_digital_post/src/EventSubscriber/BeskedfordelerEventSubscriber.php index cbef5ad..446dc8f 100644 --- a/modules/os2forms_digital_post/src/EventSubscriber/BeskedfordelerEventSubscriber.php +++ b/modules/os2forms_digital_post/src/EventSubscriber/BeskedfordelerEventSubscriber.php @@ -8,6 +8,7 @@ use Drupal\os2forms_digital_post\Helper\BeskedfordelerHelper; use Drupal\os2forms_digital_post\Helper\WebformHelperSF1601; use Psr\Log\LoggerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Event subscriber for PostStatusBeskedModtagEvent. @@ -23,6 +24,7 @@ public function __construct( private readonly BeskedfordelerHelper $beskedfordelerHelper, private readonly MessageHelper $messageHelper, private readonly WebformHelperSF1601 $webformHelper, + #[Autowire(service: 'logger.channel.os2forms_digital_post')] LoggerInterface $logger, ) { parent::__construct($logger); diff --git a/modules/os2forms_digital_post/src/Form/SettingsForm.php b/modules/os2forms_digital_post/src/Form/SettingsForm.php index 5bfb04f..0112a87 100644 --- a/modules/os2forms_digital_post/src/Form/SettingsForm.php +++ b/modules/os2forms_digital_post/src/Form/SettingsForm.php @@ -35,7 +35,6 @@ public function __construct( ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entityTypeManager, private readonly Settings $settings, - private readonly CertificateLocatorHelper $certificateLocatorHelper, ) { parent::__construct($config_factory); $this->queueStorage = $entityTypeManager->getStorage('advancedqueue_queue'); @@ -51,7 +50,6 @@ public static function create(ContainerInterface $container) { $container->get('config.factory'), $container->get('entity_type.manager'), $container->get(Settings::class), - $container->get(CertificateLocatorHelper::class), ); } @@ -289,15 +287,6 @@ public function buildForm(array $form, FormStateInterface $form_state): array { ), ]; - $form['actions']['testCertificate'] = [ - '#type' => 'submit', - '#name' => 'testCertificate', - '#value' => $this->t('Test certificate'), - '#states' => [ - 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_FORM]], - ], - ]; - return $form; } @@ -307,11 +296,6 @@ public function buildForm(array $form, FormStateInterface $form_state): array { * @phpstan-param array $form */ public function validateForm(array &$form, FormStateInterface $form_state): void { - $triggeringElement = $form_state->getTriggeringElement(); - if ('testCertificate' === ($triggeringElement['#name'] ?? NULL)) { - return; - } - $values = $form_state->getValues(); if (Settings::PROVIDER_TYPE_FORM === $values[Settings::CERTIFICATE][Settings::CERTIFICATE_PROVIDER]) { @@ -332,12 +316,6 @@ public function validateForm(array &$form, FormStateInterface $form_state): void * @phpstan-param array $form */ public function submitForm(array &$form, FormStateInterface $form_state): void { - $triggeringElement = $form_state->getTriggeringElement(); - if ('testCertificate' === ($triggeringElement['#name'] ?? NULL)) { - $this->testCertificate(); - return; - } - $config = $this->config(Settings::CONFIG_NAME); foreach ([ Settings::TEST_MODE, @@ -376,20 +354,4 @@ private function createDescription(string|array $key, ?TranslatableMarkup $descr return (string) $description; } - /** - * Test certificate. - */ - private function testCertificate(): void { - try { - - $certificateLocator = $this->certificateLocatorHelper->getCertificateLocator(); - $certificateLocator->getCertificates(); - $this->messenger()->addStatus($this->t('Certificate succesfully tested')); - } - catch (\Throwable $throwable) { - $message = $this->t('Error testing certificate: %message', ['%message' => $throwable->getMessage()]); - $this->messenger()->addError($message); - } - } - } diff --git a/modules/os2forms_digital_post/src/Helper/BeskedfordelerHelper.php b/modules/os2forms_digital_post/src/Helper/BeskedfordelerHelper.php index 5b93da5..c256dc1 100644 --- a/modules/os2forms_digital_post/src/Helper/BeskedfordelerHelper.php +++ b/modules/os2forms_digital_post/src/Helper/BeskedfordelerHelper.php @@ -9,6 +9,7 @@ use Drupal\webform\WebformSubmissionInterface; use Psr\Log\LoggerAwareTrait; use Psr\Log\LoggerInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Beskedfordeler helper. @@ -24,6 +25,7 @@ class BeskedfordelerHelper { public function __construct( private readonly Connection $database, private readonly MeMoHelper $meMoHelper, + #[Autowire(service: 'logger.channel.os2forms_digital_post')] LoggerInterface $logger, ) { $this->setLogger($logger); diff --git a/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php b/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php index d2f2af6..4419807 100644 --- a/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php +++ b/modules/os2forms_digital_post/src/Helper/DigitalPostHelper.php @@ -18,6 +18,7 @@ use Oio\Fjernprint\ForsendelseI; use Psr\Log\LoggerInterface; use Psr\Log\LoggerTrait; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Webform helper. @@ -31,13 +32,17 @@ final class DigitalPostHelper implements LoggerInterface { public function __construct( private readonly Settings $settings, private readonly KeyHelper $keyHelper, + #[Autowire(service: 'plugin.manager.os2web_datalookup')] private readonly DataLookupManager $dataLookupManager, private readonly MeMoHelper $meMoHelper, private readonly ForsendelseHelper $forsendelseHelper, private readonly BeskedfordelerHelper $beskedfordelerHelper, private readonly CertificateLocatorHelper $certificateLocatorHelper, + #[Autowire(service: 'logger.channel.os2forms_digital_post')] private readonly LoggerChannelInterface $logger, + #[Autowire(service: 'logger.channel.os2forms_digital_post_submission')] private readonly LoggerChannelInterface $submissionLogger, + #[Autowire(service: 'os2web_audit.logger')] private readonly Logger $auditLogger, ) { } diff --git a/modules/os2forms_digital_post/src/Helper/Settings.php b/modules/os2forms_digital_post/src/Helper/Settings.php index 176749b..fc7ab38 100644 --- a/modules/os2forms_digital_post/src/Helper/Settings.php +++ b/modules/os2forms_digital_post/src/Helper/Settings.php @@ -7,6 +7,7 @@ use Drupal\Core\Config\ImmutableConfig; use Drupal\key\KeyInterface; use Drupal\key\KeyRepositoryInterface; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * General settings for os2forms_digital_post. @@ -49,6 +50,7 @@ final class Settings { */ public function __construct( ConfigFactoryInterface $configFactory, + #[Autowire(service: 'key.repository')] private readonly KeyRepositoryInterface $keyRepository, ) { $this->runtimeConfig = $configFactory->get(self::CONFIG_NAME); diff --git a/modules/os2forms_digital_post/src/Helper/WebformHelperSF1601.php b/modules/os2forms_digital_post/src/Helper/WebformHelperSF1601.php index 3c2c724..60fae6a 100644 --- a/modules/os2forms_digital_post/src/Helper/WebformHelperSF1601.php +++ b/modules/os2forms_digital_post/src/Helper/WebformHelperSF1601.php @@ -21,6 +21,7 @@ use ItkDev\Serviceplatformen\Service\SF1601\SF1601; use Psr\Log\LoggerInterface; use Psr\Log\LoggerTrait; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Webform helper. @@ -51,11 +52,14 @@ final class WebformHelperSF1601 implements LoggerInterface { public function __construct( private readonly Settings $settings, EntityTypeManagerInterface $entityTypeManager, + #[Autowire(service: 'plugin.manager.os2web_datalookup')] private readonly DataLookupManager $dataLookupManager, private readonly MeMoHelper $meMoHelper, private readonly ForsendelseHelper $forsendelseHelper, private readonly BeskedfordelerHelper $beskedfordelerHelper, + #[Autowire(service: 'logger.channel.os2forms_digital_post')] private readonly LoggerChannelInterface $logger, + #[Autowire(service: 'logger.channel.os2forms_digital_post_submission')] private readonly LoggerChannelInterface $submissionLogger, private readonly DigitalPostHelper $digitalPostHelper, ) { From 25f35ce173b582a5b6ca3ac145dd2f7661f00ce7 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Fri, 24 Jan 2025 11:05:40 +0100 Subject: [PATCH 06/14] Updates settings forms --- modules/os2forms_digital_post/src/Form/SettingsForm.php | 2 +- modules/os2forms_fasit/src/Form/SettingsForm.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/os2forms_digital_post/src/Form/SettingsForm.php b/modules/os2forms_digital_post/src/Form/SettingsForm.php index 0112a87..e03f2d8 100644 --- a/modules/os2forms_digital_post/src/Form/SettingsForm.php +++ b/modules/os2forms_digital_post/src/Form/SettingsForm.php @@ -252,10 +252,10 @@ public function buildForm(array $form, FormStateInterface $form_state): array { '#key_description' => FALSE, '#title' => $this->t('Key'), '#default_value' => $this->settings->getEditableValue([Settings::CERTIFICATE, Settings::PROVIDER_TYPE_KEY]), - '#required' => TRUE, '#description' => $this->createDescription([Settings::CERTIFICATE, Settings::PROVIDER_TYPE_KEY]), '#states' => [ 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_KEY]], + 'required' => [':input[name="certificate[certificate_provider]"]' => ['value' => Settings::PROVIDER_TYPE_KEY]], ], ]; diff --git a/modules/os2forms_fasit/src/Form/SettingsForm.php b/modules/os2forms_fasit/src/Form/SettingsForm.php index fdd6e0e..a343b30 100644 --- a/modules/os2forms_fasit/src/Form/SettingsForm.php +++ b/modules/os2forms_fasit/src/Form/SettingsForm.php @@ -209,10 +209,10 @@ public function buildForm(array $form, FormStateInterface $form_state): array { 'type' => 'os2web_key_certificate', ], '#title' => $this->t('Key'), - '#required' => TRUE, '#default_value' => $config->get(self::PROVIDER_TYPE_KEY), '#states' => [ 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => self::PROVIDER_TYPE_KEY]], + 'required' => [':input[name="certificate[certificate_provider]"]' => ['value' => self::PROVIDER_TYPE_KEY]], ], ]; From 3bde9cc5dd064f25c009daf8a34c98a2c3f3c408 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Fri, 24 Jan 2025 12:54:52 +0100 Subject: [PATCH 07/14] Updates settings forms --- modules/os2forms_fasit/src/Form/SettingsForm.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/os2forms_fasit/src/Form/SettingsForm.php b/modules/os2forms_fasit/src/Form/SettingsForm.php index a343b30..9e05b95 100644 --- a/modules/os2forms_fasit/src/Form/SettingsForm.php +++ b/modules/os2forms_fasit/src/Form/SettingsForm.php @@ -209,7 +209,7 @@ public function buildForm(array $form, FormStateInterface $form_state): array { 'type' => 'os2web_key_certificate', ], '#title' => $this->t('Key'), - '#default_value' => $config->get(self::PROVIDER_TYPE_KEY), + '#default_value' => $certificateConfig[self::PROVIDER_TYPE_KEY] ?? NULL, '#states' => [ 'visible' => [':input[name="certificate[certificate_provider]"]' => ['value' => self::PROVIDER_TYPE_KEY]], 'required' => [':input[name="certificate[certificate_provider]"]' => ['value' => self::PROVIDER_TYPE_KEY]], From e1e38abe6927159b3b24844dcd6f17116d733e4e Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Fri, 24 Jan 2025 13:24:29 +0100 Subject: [PATCH 08/14] Updates settings forms --- modules/os2forms_fasit/src/Helper/Settings.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/os2forms_fasit/src/Helper/Settings.php b/modules/os2forms_fasit/src/Helper/Settings.php index 09d0cd9..0941029 100644 --- a/modules/os2forms_fasit/src/Helper/Settings.php +++ b/modules/os2forms_fasit/src/Helper/Settings.php @@ -78,7 +78,9 @@ public function getFasitCertificateLocator(): string { * Get Fasit key certificate configuration. */ public function getFasitCertificateKey(): ?string { - return $this->get(SettingsForm::KEY); + $config = $this->getFasitCertificateConfig(); + + return $config[SettingsForm::PROVIDER_TYPE_KEY] ?? NULL; } /** From 85394521a4551c99746f251c4dc780fb9cbd21c6 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Fri, 24 Jan 2025 15:51:21 +0100 Subject: [PATCH 09/14] Update versions requiment --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index aee475b..4a9bedd 100644 --- a/composer.json +++ b/composer.json @@ -59,7 +59,7 @@ "itk-dev/serviceplatformen": "^1.5", "mglaman/composer-drupal-lenient": "^1.0", "os2web/os2web_audit": "^0.1.6", - "os2web/os2web_datalookup": "dev-feature/os2web_key as 2.0.0", + "os2web/os2web_datalookup": "^2.0", "os2web/os2web_key": "^1.0", "os2web/os2web_nemlogin": "^1.0", "os2web/os2web_simplesaml": "dev-master", From c6e6cb10c3d579cf8da5f6e9494439e2caacef1a Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Fri, 24 Jan 2025 16:00:02 +0100 Subject: [PATCH 10/14] clean up --- composer.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/composer.json b/composer.json index 4a9bedd..7972ad9 100644 --- a/composer.json +++ b/composer.json @@ -81,10 +81,6 @@ "wsdltophp/packagegenerator": "^4.0" }, "repositories": { - "os2web/os2web_datalookup": { - "type": "vcs", - "url": "https://github.com/itk-dev/os2web_datalookup" - }, "drupal": { "type": "composer", "url": "https://packages.drupal.org/8" From d8424d0c9b9c714fd96d0cd23d07973f88d1431a Mon Sep 17 00:00:00 2001 From: Jeppe Kuhlmann Andersen <78410897+jekuaitk@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:28:11 +0100 Subject: [PATCH 11/14] Update modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php Co-authored-by: Mikkel Ricky --- .../src/Helper/CertificateLocatorHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php b/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php index 14710b9..01fde40 100644 --- a/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php +++ b/modules/os2forms_digital_post/src/Helper/CertificateLocatorHelper.php @@ -45,7 +45,7 @@ public function getCertificateLocator(): CertificateLocatorInterface { $locatorType = $certificateSettings['locator_type']; $options = $certificateSettings[$locatorType]; $options += [ - 'passphrase' => $certificateSettings['passphrase'] ?: '', + 'passphrase' => $certificateSettings['passphrase'], ]; if (self::LOCATOR_TYPE_AZURE_KEY_VAULT === $locatorType) { From 243e1e828bdd1f1604f5e5696d17170751043078 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Mon, 27 Jan 2025 11:29:28 +0100 Subject: [PATCH 12/14] Autowired services --- .../os2forms_digital_post.services.yml | 6 ------ .../src/Helper/ForsendelseHelper.php | 16 ++++++++++++++++ .../src/Helper/MeMoHelper.php | 16 ++++++++++++++++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/modules/os2forms_digital_post/os2forms_digital_post.services.yml b/modules/os2forms_digital_post/os2forms_digital_post.services.yml index ed03ea3..1b554d9 100644 --- a/modules/os2forms_digital_post/os2forms_digital_post.services.yml +++ b/modules/os2forms_digital_post/os2forms_digital_post.services.yml @@ -15,15 +15,9 @@ services: Drupal\os2forms_digital_post\Helper\MeMoHelper: autowire: true - arguments: - $elementInfoManager: "@plugin.manager.element_info" - $webformTokenManager: "@webform.token_manager" Drupal\os2forms_digital_post\Helper\ForsendelseHelper: autowire: true - arguments: - $elementInfoManager: "@plugin.manager.element_info" - $webformTokenManager: "@webform.token_manager" Drupal\os2forms_digital_post\Helper\DigitalPostHelper: autowire: true diff --git a/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php b/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php index 42cbbea..998c8f4 100644 --- a/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php +++ b/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php @@ -2,12 +2,14 @@ namespace Drupal\os2forms_digital_post\Helper; +use Drupal\Core\Render\ElementInfoManager; use Drupal\os2forms_digital_post\Exception\InvalidForsendelseException; use Drupal\os2forms_digital_post\Model\Document; use Drupal\os2forms_digital_post\Plugin\WebformHandler\WebformHandlerSF1601; use Drupal\os2web_datalookup\LookupResult\CompanyLookupResult; use Drupal\os2web_datalookup\LookupResult\CprLookupResult; use Drupal\webform\WebformSubmissionInterface; +use Drupal\webform\WebformTokenManagerInterface; use ItkDev\Serviceplatformen\Service\SF1601\Serializer; use Oio\Dkal\AfsendelseModtager; use Oio\Ebxml\CountryIdentificationCode; @@ -16,6 +18,7 @@ use Oio\Fjernprint\ForsendelseModtager; use Oio\Fjernprint\ModtagerAdresse; use Oio\Fjernprint\PostParametre; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Forsendelse helper. @@ -24,6 +27,19 @@ class ForsendelseHelper extends AbstractMessageHelper { // PostKategoriKode. public const POST_KATEGORI_KODE_PRIORITAIRE = 'Prioritaire'; + /** + * {@inheritDoc} + */ + public function __construct( + Settings $settings, + #[Autowire(service: 'plugin.manager.element_info')] + ElementInfoManager $elementInfoManager, + #[Autowire(service: 'webform.token_manager')] + WebformTokenManagerInterface $webformTokenManager, + ) { + parent::__construct($settings, $elementInfoManager, $webformTokenManager); + } + /** * Build forsendelse. */ diff --git a/modules/os2forms_digital_post/src/Helper/MeMoHelper.php b/modules/os2forms_digital_post/src/Helper/MeMoHelper.php index 3ec8b7e..96b82f4 100644 --- a/modules/os2forms_digital_post/src/Helper/MeMoHelper.php +++ b/modules/os2forms_digital_post/src/Helper/MeMoHelper.php @@ -14,19 +14,35 @@ use DigitalPost\MeMo\MessageHeader; use DigitalPost\MeMo\Recipient; use DigitalPost\MeMo\Sender; +use Drupal\Core\Render\ElementInfoManager; use Drupal\os2forms_digital_post\Model\Document; use Drupal\os2forms_digital_post\Plugin\WebformHandler\WebformHandlerSF1601; use Drupal\os2web_datalookup\LookupResult\CompanyLookupResult; use Drupal\os2web_datalookup\LookupResult\CprLookupResult; use Drupal\webform\WebformSubmissionInterface; +use Drupal\webform\WebformTokenManagerInterface; use ItkDev\Serviceplatformen\Service\SF1601\SF1601; use ItkDev\Serviceplatformen\Service\SF1601\Serializer; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * MeMo helper. */ class MeMoHelper extends AbstractMessageHelper { + /** + * {@inheritDoc} + */ + public function __construct( + Settings $settings, + #[Autowire(service: 'plugin.manager.element_info')] + ElementInfoManager $elementInfoManager, + #[Autowire(service: 'webform.token_manager')] + WebformTokenManagerInterface $webformTokenManager, + ) { + parent::__construct($settings, $elementInfoManager, $webformTokenManager); + } + /** * Build message. * From 5e19aa507c4807a22c613095f279acb5478fe42b Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Mon, 27 Jan 2025 12:55:09 +0100 Subject: [PATCH 13/14] Ignored possible UselessOverridingMethod --- modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php | 3 +++ modules/os2forms_digital_post/src/Helper/MeMoHelper.php | 3 +++ 2 files changed, 6 insertions(+) diff --git a/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php b/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php index 998c8f4..a8501ea 100644 --- a/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php +++ b/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php @@ -30,6 +30,7 @@ class ForsendelseHelper extends AbstractMessageHelper { /** * {@inheritDoc} */ + // phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod public function __construct( Settings $settings, #[Autowire(service: 'plugin.manager.element_info')] @@ -40,6 +41,8 @@ public function __construct( parent::__construct($settings, $elementInfoManager, $webformTokenManager); } + // phpcs:enable + /** * Build forsendelse. */ diff --git a/modules/os2forms_digital_post/src/Helper/MeMoHelper.php b/modules/os2forms_digital_post/src/Helper/MeMoHelper.php index 96b82f4..a88e9df 100644 --- a/modules/os2forms_digital_post/src/Helper/MeMoHelper.php +++ b/modules/os2forms_digital_post/src/Helper/MeMoHelper.php @@ -33,6 +33,7 @@ class MeMoHelper extends AbstractMessageHelper { /** * {@inheritDoc} */ + // phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod public function __construct( Settings $settings, #[Autowire(service: 'plugin.manager.element_info')] @@ -43,6 +44,8 @@ public function __construct( parent::__construct($settings, $elementInfoManager, $webformTokenManager); } + // phpcs:enable + /** * Build message. * From c0c053e34c7ebc84e679ba3e06df7e14122eb566 Mon Sep 17 00:00:00 2001 From: jekuaitk Date: Mon, 27 Jan 2025 14:54:39 +0100 Subject: [PATCH 14/14] Moved autowire to abstract class --- .../src/Helper/AbstractMessageHelper.php | 2 ++ .../src/Helper/ForsendelseHelper.php | 19 ------------------- .../src/Helper/MeMoHelper.php | 19 ------------------- 3 files changed, 2 insertions(+), 38 deletions(-) diff --git a/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php b/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php index d9fb96a..e4a85ab 100644 --- a/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php +++ b/modules/os2forms_digital_post/src/Helper/AbstractMessageHelper.php @@ -12,6 +12,7 @@ use Drupal\webform_attachment\Element\WebformAttachmentBase; use ItkDev\Serviceplatformen\Service\SF1601\Serializer; use Oio\Fjernprint\ForsendelseI; +use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Abstract message helper. @@ -23,6 +24,7 @@ abstract class AbstractMessageHelper { */ public function __construct( readonly protected Settings $settings, + #[Autowire(service: 'plugin.manager.element_info')] readonly protected ElementInfoManager $elementInfoManager, readonly protected WebformTokenManagerInterface $webformTokenManager, ) { diff --git a/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php b/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php index a8501ea..42cbbea 100644 --- a/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php +++ b/modules/os2forms_digital_post/src/Helper/ForsendelseHelper.php @@ -2,14 +2,12 @@ namespace Drupal\os2forms_digital_post\Helper; -use Drupal\Core\Render\ElementInfoManager; use Drupal\os2forms_digital_post\Exception\InvalidForsendelseException; use Drupal\os2forms_digital_post\Model\Document; use Drupal\os2forms_digital_post\Plugin\WebformHandler\WebformHandlerSF1601; use Drupal\os2web_datalookup\LookupResult\CompanyLookupResult; use Drupal\os2web_datalookup\LookupResult\CprLookupResult; use Drupal\webform\WebformSubmissionInterface; -use Drupal\webform\WebformTokenManagerInterface; use ItkDev\Serviceplatformen\Service\SF1601\Serializer; use Oio\Dkal\AfsendelseModtager; use Oio\Ebxml\CountryIdentificationCode; @@ -18,7 +16,6 @@ use Oio\Fjernprint\ForsendelseModtager; use Oio\Fjernprint\ModtagerAdresse; use Oio\Fjernprint\PostParametre; -use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * Forsendelse helper. @@ -27,22 +24,6 @@ class ForsendelseHelper extends AbstractMessageHelper { // PostKategoriKode. public const POST_KATEGORI_KODE_PRIORITAIRE = 'Prioritaire'; - /** - * {@inheritDoc} - */ - // phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod - public function __construct( - Settings $settings, - #[Autowire(service: 'plugin.manager.element_info')] - ElementInfoManager $elementInfoManager, - #[Autowire(service: 'webform.token_manager')] - WebformTokenManagerInterface $webformTokenManager, - ) { - parent::__construct($settings, $elementInfoManager, $webformTokenManager); - } - - // phpcs:enable - /** * Build forsendelse. */ diff --git a/modules/os2forms_digital_post/src/Helper/MeMoHelper.php b/modules/os2forms_digital_post/src/Helper/MeMoHelper.php index a88e9df..3ec8b7e 100644 --- a/modules/os2forms_digital_post/src/Helper/MeMoHelper.php +++ b/modules/os2forms_digital_post/src/Helper/MeMoHelper.php @@ -14,38 +14,19 @@ use DigitalPost\MeMo\MessageHeader; use DigitalPost\MeMo\Recipient; use DigitalPost\MeMo\Sender; -use Drupal\Core\Render\ElementInfoManager; use Drupal\os2forms_digital_post\Model\Document; use Drupal\os2forms_digital_post\Plugin\WebformHandler\WebformHandlerSF1601; use Drupal\os2web_datalookup\LookupResult\CompanyLookupResult; use Drupal\os2web_datalookup\LookupResult\CprLookupResult; use Drupal\webform\WebformSubmissionInterface; -use Drupal\webform\WebformTokenManagerInterface; use ItkDev\Serviceplatformen\Service\SF1601\SF1601; use ItkDev\Serviceplatformen\Service\SF1601\Serializer; -use Symfony\Component\DependencyInjection\Attribute\Autowire; /** * MeMo helper. */ class MeMoHelper extends AbstractMessageHelper { - /** - * {@inheritDoc} - */ - // phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod - public function __construct( - Settings $settings, - #[Autowire(service: 'plugin.manager.element_info')] - ElementInfoManager $elementInfoManager, - #[Autowire(service: 'webform.token_manager')] - WebformTokenManagerInterface $webformTokenManager, - ) { - parent::__construct($settings, $elementInfoManager, $webformTokenManager); - } - - // phpcs:enable - /** * Build message. *