feat(customer): Ajoute l'envoi de mot de passe de boîte mail client

Cette modification permet d'envoyer le mot de passe d'une boîte mail client. Ajoute un event listener et un template d'email.
This commit is contained in:
Serreau Jovann
2025-09-27 17:29:50 +02:00
parent 343d8dc1b8
commit 9309d6e304
5 changed files with 87 additions and 4 deletions

View File

@@ -35,13 +35,12 @@ use App\Service\Customer\Billing\{
CreateDevisCustomerEventSend,
CreateFactureEventSend
};
use App\Service\Customer\{
CreateAvisEvent,
use App\Service\Customer\{CreateAvisEvent,
CreateCustomerNddEmailEvent,
CreateFactureEvent,
CustomerSendPasswordEmail,
DeleteCustomerEvent,
RestoreCustomerEvent
};
RestoreCustomerEvent};
use App\Service\Logger\LoggerService;
use App\Service\Ovh\Client;
use App\Service\Vault\VaultClient;
@@ -355,6 +354,17 @@ class CustomerController extends AbstractController
}
}
if ($request->query->has('idEmailSendPassword')) {
$idEmailSend = $request->query->getInt('idEmailSendPassword');
$emailSend = $entityManager->getRepository(CustomerDnsEmail::class)->find($idEmailSend);
$loggerService->log('SEND', 'Envoie du mot de passe ' . $emailSend->getEmail(), $this->getUser());
$event = new CustomerSendPasswordEmail($emailSend);
$eventDispatcher->dispatch($event);
$this->addFlash('success', 'Envoie du mot de passe de la boîte mail');
return $this->redirectToRoute('artemis_intranet_customer_view', ['id' => $customer->getId(), 'current' => 'email', 'idNdd' => $emailSend->getDns()->getId()]);
}
if ($request->query->has('idEmailRestore')) {
$idEmailRestore = $request->query->getInt('idEmailRestore');
$emailDelete = $entityManager->getRepository(CustomerDnsEmail::class)->find($idEmailRestore);

View File

@@ -24,6 +24,7 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Uid\Uuid;
use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
#[AsEventListener(event: CustomerSendPasswordEmail::class, method: 'onCustomerSendPasswordEmail')]
#[AsEventListener(event: CreateCustomerNddEmailEvent::class, method: 'onCreateCustomerNddEmailEvent')]
#[AsEventListener(event: CreateDevisCustomerEvent::class, method: 'onBillingEvent')]
#[AsEventListener(event: CreateDevisCustomerEventSend::class, method: 'onBillingEventSend')]
@@ -45,6 +46,26 @@ class BillingEventSusbriber
){
}
public function onCustomerSendPasswordEmail(CustomerSendPasswordEmail $customerSendPasswordEmail)
{
$ndd = $customerSendPasswordEmail->getCustomerDnsEmail()->getDns();
$email = $customerSendPasswordEmail->getCustomerDnsEmail();
$customer = $customerSendPasswordEmail->getCustomerDnsEmail()->getDns()->getCustomer()->mainContact();
$password = $this->vaultClient->decrypt('mainframe_customer',$email->getPassword());
$this->mailer->send($email->getEmail()."@".$ndd->getNdd(),$email->getEmail(),"[SARL SITECONSEIL] - Votre de mot de passe","mails/customer/password_mailbox.twig",[
'ndd' => $ndd,
'email' => $email,
'password' => $password,
]);
$this->mailer->send($customer->getEmail(),$customer->getCustomer()->getRaisonSocial(),"[SARL SITECONSEIL] - Votre de mot de passe","mails/customer/password_mailbox.twig",[
'ndd' => $ndd,
'email' => $email,
'password' => $password,
]);
}
public function onCreateCustomerNddEmailEvent(CreateCustomerNddEmailEvent $event): void
{
$ndd = $event->getCustomerDnsEmail()->getDns();

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Service\Customer;
use App\Entity\CustomerAdvertPayment;
use App\Entity\CustomerDnsEmail;
class CustomerSendPasswordEmail
{
private CustomerDnsEmail $customerDnsEmail;
public function __construct(CustomerDnsEmail $customerDnsEmail)
{
$this->customerDnsEmail = $customerDnsEmail;
}
/**
* @return CustomerDnsEmail
*/
public function getCustomerDnsEmail(): CustomerDnsEmail
{
return $this->customerDnsEmail;
}
}

View File

@@ -23,6 +23,9 @@
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400">{{ email.storage|skFormat }}</td>
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400">{{ email.createAt|date('d/m/Y') }}</td>
<td class="px-6 py-4 whitespace-nowrap font-medium text-blue-600 dark:text-blue-400">
{% if email.password != "" %}
<a data-turbo="false" href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:email.dns.id,idEmailSendPassword:email.id}) }}" class="bg-purple-600 hover:bg-purple-700 text-white px-3 py-1 rounded">Envoier le mot de passe</a>
{% endif %}
<a is="confirm-modal" type="delete-email" data-turbo="false" href="{{ path('artemis_intranet_customer_view',{id:customer.id,current:'email',idNdd:email.dns.id,idEmailDelete:email.id}) }}" class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded">Supprimer</a>
</td>
{% if email.isDeleted %}

View File

@@ -0,0 +1,25 @@
{% extends 'mails/base.twig' %}
{% block content %}
<mj-text>
Bonjour,
</mj-text>
<mj-text>
Vous avez demandé le mot de passe de la boîte mail <strong>{{ datas.email.email }}@{{ datas.ndd.ndd }}</strong>.
</mj-text>
<mj-text>
Voici le mot de passe associé : <strong>{{ datas.password }}</strong>
</mj-text>
<mj-text>
Configuration pour votre messagerie serveur sécurisée :<br/>
Serveur : <strong>mail.esy-web.dev</strong><br/>
Protocole POP3 sécurisé (SSL) : Port <strong>995</strong><br/>
Protocole IMAP sécurisé (SSL) : Port <strong>993</strong><br/>
Protocole SMTP sécurisé : Ports <strong>465 (SSL)</strong> et <strong>587 (STARTTLS)</strong><br/>
</mj-text>
<mj-text>
Vous pouvez accéder à votre webmail ici : <a href="https://mail.esy-web.dev/" target="_blank">https://mail.esy-web.dev/</a>
</mj-text>
<mj-text>
Cordialement,
</mj-text>
{% endblock %}