Skip to content

Commit 8ccdb91

Browse files
committed
Added audit logging to os2forms_nemid
1 parent 80d2ebd commit 8ccdb91

File tree

4 files changed

+57
-3
lines changed

4 files changed

+57
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ before starting to add changes. Use example [placed in the end of the page](#exa
1414
- Ensured installation of `os2web_audit`
1515
- `os2web_audit` has default logging through `watchdog`
1616
- Adds audit logging to `os2forms_digital_post`
17+
- Adds audit logging to `os2forms_nemid`
1718

1819
## [3.17.0] 2024-11-21
1920

modules/os2forms_nemid/os2forms_nemid.info.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ dependencies:
88
- 'drupal:os2forms'
99
- 'drupal:os2web_nemlogin'
1010
- 'os2web_datalookup:os2web_datalookup'
11+
- 'os2web:os2web_audit'

modules/os2forms_nemid/os2forms_nemid.services.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ services:
66
- {name: event_subscriber}
77
os2forms_nemid.forms_helper:
88
class: Drupal\os2forms_nemid\Service\FormsHelper
9-
arguments: ['@os2web_nemlogin.auth_provider', '@plugin.manager.os2web_datalookup', '@current_route_match']
9+
arguments: ['@os2web_nemlogin.auth_provider', '@plugin.manager.os2web_datalookup', '@current_route_match', '@os2web_audit.logger']

modules/os2forms_nemid/src/Service/FormsHelper.php

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
use Drupal\os2forms_nemid\Element\NemidCompanyCvrFetchData;
99
use Drupal\os2forms_nemid\Element\NemidCompanyPNumber;
1010
use Drupal\os2forms_nemid\Element\NemidCprFetchData;
11+
use Drupal\os2web_audit\Service\Logger;
1112
use Drupal\os2web_datalookup\LookupResult\CompanyLookupResult;
1213
use Drupal\os2web_datalookup\LookupResult\CprLookupResult;
1314
use Drupal\os2web_datalookup\Plugin\DataLookupManager;
15+
use Drupal\os2web_nemlogin\Plugin\AuthProviderInterface;
1416
use Drupal\os2web_nemlogin\Service\AuthProviderService;
1517
use Drupal\webform\WebformSubmissionInterface;
1618

@@ -70,6 +72,13 @@ class FormsHelper {
7072
*/
7173
private RouteMatchInterface $routeMatch;
7274

75+
/**
76+
* An audit logger.
77+
*
78+
* @var \Drupal\os2web_audit\Service\Logger
79+
*/
80+
private Logger $auditLogger;
81+
7382
/**
7483
* Constructor.
7584
*
@@ -79,11 +88,19 @@ class FormsHelper {
7988
* Datalookup plugin manager.
8089
* @param \Drupal\Core\Routing\RouteMatchInterface $routeMatch
8190
* Route match service.
91+
* @param \Drupal\os2web_audit\Service\Logger $auditLogger
92+
* Audit logger.
8293
*/
83-
public function __construct(AuthProviderService $authProviderService, DataLookupManager $dataLookPluginManager, RouteMatchInterface $routeMatch) {
94+
public function __construct(
95+
AuthProviderService $authProviderService,
96+
DataLookupManager $dataLookPluginManager,
97+
RouteMatchInterface $routeMatch,
98+
Logger $auditLogger,
99+
) {
84100
$this->authProviderService = $authProviderService;
85101
$this->dataLookManager = $dataLookPluginManager;
86102
$this->routeMatch = $routeMatch;
103+
$this->auditLogger = $auditLogger;
87104
}
88105

89106
/**
@@ -126,6 +143,14 @@ public function retrieveCprLookupResult(FormStateInterface $form_state) {
126143
}
127144
}
128145

146+
// We need the auth provider for logging purposes.
147+
$authProviderPlugin = $this->getAuthProvider($form_state);
148+
149+
$userCpr = $authProviderPlugin->fetchValue('cpr');
150+
$lookedUpCpr = $cprLookupResult->getCpr();
151+
152+
$this->auditLogger->info('DataLookup', 'User with cpr ' . $userCpr . ' looked at cpr ' . $lookedUpCpr);
153+
129154
return $cprLookupResult;
130155
}
131156

@@ -196,7 +221,7 @@ public function lookupPersonData(FormStateInterface $form_state) {
196221
/**
197222
* Retrieves the CompanyLookupResult which is stored in form_state.
198223
*
199-
* If there is no CBVRLookupResult, it is requested and saved for future uses.
224+
* If there is no CVRLookupResult, it is requested and saved for future uses.
200225
*
201226
* @param \Drupal\Core\Form\FormStateInterface $form_state
202227
* Form state.
@@ -408,4 +433,31 @@ public function webformSubmissionPrepareForm(WebformSubmissionInterface $webform
408433
}
409434
}
410435

436+
/**
437+
* Get active auth provider plugin.
438+
*
439+
* @param \Drupal\Core\Form\FormStateInterface $form_state
440+
* Form state.
441+
*
442+
* @return \Drupal\os2web_nemlogin\Plugin\AuthProviderInterface
443+
* The active auth provider plugin.
444+
*
445+
* @throws \Drupal\Component\Plugin\Exception\PluginException
446+
*/
447+
private function getAuthProvider(FormStateInterface $form_state): AuthProviderInterface {
448+
/** @var \Drupal\webform\WebformSubmissionInterface Interface $webformSubmission */
449+
$webformSubmission = $form_state->getFormObject()->getEntity();
450+
/** @var \Drupal\webform\WebformInterface $webform */
451+
$webform = $webformSubmission->getWebform();
452+
$webformNemidSettings = $webform->getThirdPartySetting('os2forms', 'os2forms_nemid');
453+
454+
// Getting auth plugin ID override.
455+
$authPluginId = NULL;
456+
if (!empty($webformNemidSettings['session_type'])) {
457+
$authPluginId = $webformNemidSettings['session_type'];
458+
}
459+
460+
return ($authPluginId) ? $this->authProviderService->getPluginInstance($authPluginId) : $this->authProviderService->getActivePlugin();
461+
}
462+
411463
}

0 commit comments

Comments
 (0)