Skip to content
Code-Schnipsel Gruppen Projekte
Commit 20e4cf69 erstellt von Patrick Müller's avatar Patrick Müller
Dateien durchsuchen

feat: added user login-log entries to gdpr report

Übergeordneter a14f5be8
Keine zugehörigen Branchen gefunden
Keine zugehörigen Tags gefunden
2 Merge Requests!27feat: added user login-log entries to gdpr report,!20Update 'next-3.x' with latest changes from 'main'
Pipeline-Nr. 16575 bestanden
......@@ -894,7 +894,32 @@ Data Categories
<de><![CDATA[Letzte Browserkennung (User Agent)]]></de>
<en><![CDATA[Last browser user agent]]></en>
</locale>
<locale name="QuiqqerUserDataProvider.user_data_field.login_log.username">
<de><![CDATA[Benutzername]]></de>
<en><![CDATA[Username]]></en>
</locale>
<locale name="QuiqqerUserDataProvider.user_data_field.login_log.ip">
<de><![CDATA[IP-Adresse]]></de>
<en><![CDATA[IP address]]></en>
</locale>
<locale name="QuiqqerUserDataProvider.user_data_field.login_log.date">
<de><![CDATA[Login am]]></de>
<en><![CDATA[Log-in at]]></en>
</locale>
<locale name="QuiqqerUserDataProvider.user_data_field.login_log.user_data">
<de><![CDATA[Sonstige Informationen]]></de>
<en><![CDATA[Other information]]></en>
</locale>
<locale name="QuiqqerUserDataProvider.user_data_field.login_log">
<de><![CDATA[Login-Vorgang]]></de>
<en><![CDATA[Log-in process]]></en>
</locale>
<locale name="QuiqqerUserDataProvider.user_data_field.login_logs">
<de><![CDATA[Gespeicherte Login-Vorgänge]]></de>
<en><![CDATA[Saved Log-in processes]]></en>
</locale>
<locale name="settings.section.regulatory_authority.title">
<de><![CDATA[Zuständige Datenschutzbehörde]]></de>
<en><![CDATA[Regulatory data protection authority]]></en>
......
......@@ -8,6 +8,7 @@ use QUI\FrontendUsers\Handler;
use QUI\Users\Address;
use function class_exists;
use function json_validate;
class QuiqqerUserDataProvider extends AbstractDataProvider
{
......@@ -139,9 +140,83 @@ class QuiqqerUserDataProvider extends AbstractDataProvider
$dataFields[] = Utils::parseAddressToUserDataField($address, $this->locale);
}
// Data from login logs
$loginLogsUserDataField = $this->parseUserDataFieldFromLoginLogs();
if ($loginLogsUserDataField) {
$dataFields[] = $loginLogsUserDataField;
}
return $dataFields;
}
private function parseUserDataFieldFromLoginLogs(): ?UserDataField
{
if (!class_exists('\QUI\LoginLogger\LoginLogger')) {
return null;
}
$loginLogs = QUI\LoginLogger\LoginLogger::getLogins([
'where' => [
'uid' => $this->user->getUUID()
]
]);
$loginLogEntries = [];
foreach ($loginLogs as $row) {
$fields = [
new UserDataField(
$this->locale->get(
'quiqqer/gdpr',
'QuiqqerUserDataProvider.user_data_field.login_log.username'
),
$row['username']
),
new UserDataField(
$this->locale->get(
'quiqqer/gdpr',
'QuiqqerUserDataProvider.user_data_field.login_log.ip'
),
$row['ip']
),
new UserDataField(
$this->locale->get(
'quiqqer/gdpr',
'QuiqqerUserDataProvider.user_data_field.login_log.date'
),
$row['date']
)
];
if (!empty($row['user_data']) && $row['user_data'] !== '[]') {
$fields[] = new UserDataField(
$this->locale->get(
'quiqqer/gdpr',
'QuiqqerUserDataProvider.user_data_field.login_log.user_data'
),
$row['user_data']
);
}
$loginLogEntries[] = new UserDataField(
$this->locale->get(
'quiqqer/gdpr',
'QuiqqerUserDataProvider.user_data_field.login_log'
),
$fields
);
}
return new UserDataField(
$this->locale->get(
'quiqqer/gdpr',
'QuiqqerUserDataProvider.user_data_field.login_logs'
),
$loginLogEntries
);
}
private function getDataFieldTitle(string $field): string
{
return $this->locale->get('quiqqer/gdpr', 'QuiqqerUserDataProvider.user_data_field.' . $field);
......
0% Lade oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren