From 98c4376cee0e18e7e58cc6b41d4e2baecee58bf0 Mon Sep 17 00:00:00 2001 From: pfleu <fleutotp@gmail.com> Date: Fri, 27 Jan 2023 15:11:39 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20envoi=20de=20mail=20lors=20des=20logs?= =?UTF-8?q?=20d'erreurs.=20Ajout=20adresses=20d'envoi=20de=20tous=20les=20?= =?UTF-8?q?emails=20pour=20env=20=3D=20preprod.=20Rajout=20validation=20em?= =?UTF-8?q?ail=20user=20v=C3=A9rifi=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/packages/mailer.yaml | 19 +++++- config/packages/monolog.yaml | 61 +++++++++++++++---- config/services.yaml | 9 +++ .../CheckVerifiedUserSubscriber.php | 10 +-- src/Logger/ExtraDataProcessor.php | 42 +++++++++++++ 5 files changed, 120 insertions(+), 21 deletions(-) create mode 100644 src/Logger/ExtraDataProcessor.php diff --git a/config/packages/mailer.yaml b/config/packages/mailer.yaml index 56a650d..8738058 100644 --- a/config/packages/mailer.yaml +++ b/config/packages/mailer.yaml @@ -1,3 +1,16 @@ -framework: - mailer: - dsn: '%env(MAILER_DSN)%' +when@preprod: + framework: + mailer: + dsn: '%env(MAILER_DSN)%' + envelope: + recipients: ['fleutotp@gmail.com', 'enzo.simonnet@liris.cnrs.fr', 'mathieu.loiseau@liris.cnrs.fr'] + +when@dev: + framework: + mailer: + dsn: '%env(MAILER_DSN)%' + +when@prod: + framework: + mailer: + dsn: '%env(MAILER_DSN)%' \ No newline at end of file diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index 8c9efa9..3a453d6 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -43,19 +43,54 @@ when@prod: main: type: fingers_crossed action_level: error - handler: nested + handler: grouped excluded_http_codes: [404, 405] buffer_size: 50 # How many messages should be saved? Prevent memory leaks - nested: - type: stream - path: php://stderr + grouped: + type: group + members: [streamed, symfony_mailer] + streamed: + type: stream + path: '%kernel.logs_dir%/%kernel.environment%.log' level: debug - formatter: monolog.formatter.json - console: - type: console - process_psr_3_messages: false - channels: ["!event", "!doctrine"] - deprecation: - type: stream - channels: [deprecation] - path: php://stderr + deduplicated: + type: deduplication + time: 10 # the time in seconds during which duplicate entries are discarded (default: 60) + handler: symfony_mailer + symfony_mailer: + type: symfony_mailer + from_email: '%env(MONOLOG_ERROR_MAIL_FROM)%' + to_email: '%env(MONOLOG_ERROR_MAIL_TO)%' + subject: 'Bug Balex %kernel.environment% : %%message%%' + level: critical + formatter: monolog.formatter.extra_data + content_type: text/html + +when@preprod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: grouped + excluded_http_codes: [404, 405] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + grouped: + type: group + members: [streamed, symfony_mailer] + streamed: + type: stream + path: '%kernel.logs_dir%/%kernel.environment%.log' + level: debug + deduplicated: + type: deduplication + time: 10 # the time in seconds during which duplicate entries are discarded (default: 60) + handler: symfony_mailer + symfony_mailer: + type: symfony_mailer + from_email: '%env(MONOLOG_ERROR_MAIL_FROM)%' + to_email: '%env(MONOLOG_ERROR_MAIL_TO)%' + subject: 'Bug Balex %kernel.environment% : %%message%%' + level: critical + formatter: monolog.formatter.extra_data + content_type: text/html diff --git a/config/services.yaml b/config/services.yaml index e983b4f..d03bcf5 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -37,6 +37,15 @@ services: tags: [serializer.normalizer] + monolog.formatter.extra_data: + class: Monolog\Formatter\HtmlFormatter + arguments: + - "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%% %%context%% %%extra%%\n" + + App\Logger\ExtraDataProcessor: + tags: + - { name: monolog.processor } + # app.listener.api_exception: # class: AppBundle\EventListener\ApiExceptionSubscriber # tags: diff --git a/src/EventSubscriber/CheckVerifiedUserSubscriber.php b/src/EventSubscriber/CheckVerifiedUserSubscriber.php index 52affab..a6643a1 100644 --- a/src/EventSubscriber/CheckVerifiedUserSubscriber.php +++ b/src/EventSubscriber/CheckVerifiedUserSubscriber.php @@ -20,11 +20,11 @@ class CheckVerifiedUserSubscriber implements EventSubscriberInterface if (!$user instanceof User) { throw new \Exception('Unexpected user type'); } -// if (!$user->getIsVerified()) { -// throw new CustomUserMessageAuthenticationException( -// "Veuillez confirmer la création de votre compte depuis l'email reçu." -// ); -// } + if (!$user->getIsVerified()) { + throw new CustomUserMessageAuthenticationException( + "Veuillez confirmer la création de votre compte depuis l'email reçu." + ); + } } public static function getSubscribedEvents() { diff --git a/src/Logger/ExtraDataProcessor.php b/src/Logger/ExtraDataProcessor.php new file mode 100644 index 0000000..0ceb714 --- /dev/null +++ b/src/Logger/ExtraDataProcessor.php @@ -0,0 +1,42 @@ +<?php + +namespace App\Logger; + +use App\Entity\User; +use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; +use Symfony\Component\Security\Core\Security; + +class ExtraDataProcessor +{ + private $tokenStorage; + private $requestStack; + + public function __construct(Security $security, RequestStack $requestStack) + { + $this->security = $security; + $this->requestStack = $requestStack; + } + + public function __invoke(array $record) + { + if ($this->security->getUser() != null) { + $user = $this->security->getUser(); + if ($user instanceOf User) { + $record['extra']['utilisateur']['nom'] = $user->getPseudo(); + $record['extra']['utilisateur']['email'] = $user->getEmail(); + } else { + $record['extra']['utilisateur'] = "Not logged in."; + } + } else { + $record['extra']['utilisateur'] = "Not logged in."; + } + + $request = $this->requestStack->getCurrentRequest(); + if ($request){ + $record['extra']['url'] = $request->getUri(); + } + + return $record; + } +} -- GitLab