diff --git a/CHANGELOG.md b/CHANGELOG.md index 07231e3..97aed49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,5 +9,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - First version of the module +- Added submodule to log user CUD events. [Unreleased]: https://github.com/OS2web/os2web_audit/compare/develop...HEAD diff --git a/modules/os2web_audit_user/os2web_audit_user.info.yml b/modules/os2web_audit_user/os2web_audit_user.info.yml new file mode 100644 index 0000000..d4de8d0 --- /dev/null +++ b/modules/os2web_audit_user/os2web_audit_user.info.yml @@ -0,0 +1,6 @@ +name: "OS2web Audit logging users" +description: "Logs CUD events for users" +type: module +core_version_requirement: ^8 || ^9 || ^10 +dependencies: + - os2web_audit:os2web_audit diff --git a/modules/os2web_audit_user/os2web_audit_user.module b/modules/os2web_audit_user/os2web_audit_user.module new file mode 100644 index 0000000..aed14d4 --- /dev/null +++ b/modules/os2web_audit_user/os2web_audit_user.module @@ -0,0 +1,68 @@ +getRoles())); + os2web_audit_user_log($msg, $entity->getEmail()); +} + +/** + * Implements hook_ENTITY_TYPE_update(). + */ +function os2web_audit_user_user_update(EntityInterface $entity): void { + /** @var \Drupal\user\Entity\User $entity */ + $msg = sprintf('User updated with rolles: %s', implode(', ', $entity->getRoles())); + os2web_audit_user_log($msg, $entity->getEmail()); +} + +/** + * Implements hook_ENTITY_TYPE_delete(). + */ +function os2web_audit_user_user_delete(EntityInterface $entity): void { + /** @var \Drupal\user\Entity\User $entity */ + os2web_audit_user_log('User deleted', $entity->getEmail()); +} + +/** + * Implements hook_user_login(). + */ +function os2web_audit_user_user_login(UserInterface $account): void { + os2web_audit_user_log('User logged in', $account->getEmail()); +} + +/** + * Implements hook_user_logout(). + */ +function os2web_audit_user_user_logout(AccountInterface $account): void { + os2web_audit_user_log('User logged out', $account->getEmail()); +} + +/** + * Simple logger wrapper. + * + * @param string $message + * Message to log. + * @param string $mail + * Identify users by e-mail address. + * @param array $metadata + * Optional metadata to set. + */ +function os2web_audit_user_log(string $message, string $mail, array $metadata = []): void { + /** @var \Drupal\os2web_audit\Service\Logger $logger */ + $logger = \Drupal::service('os2web_audit.logger'); + + $metadata['userId'] = $mail; + $logger->info('User', $message, FALSE, $metadata); +}