Commit bb483f5d authored by Thibaut Vallee's avatar Thibaut Vallee
Browse files

Autorisation d'une authentification starttls

parent d16db69e
Loading
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
7.3.0
----
- configuration permettant d'utiliser d'autre port que 465 pour s'authentifier (car du port 587 qui requiére du START_TLS)
['unicaen-mail']['connection_config']['use_auth'] par défaut à false. S'il est a true, on utilise les paramétres d'authentification ['unicaen-mail']['connection_config']['username'] et ['unicaen-mail']['connection_config']['password']
- Modification permettant d'envoyer des mails en START_TLS et plus uniquement en TLS 
1) une nouvelle clé : ['unicaen-mail']['connection_config']['use_auth'] (par défaut à false) permettant de dire si l'on utilise ou non un protocle requiérant l'authentification.
Si la clé est a true, les paramètre ['unicaen-mail']['connection_config']['username'] et ['unicaen-mail']['connection_config']['password'] seront utilisés (et requis dans la config)
2) Modification de la clé ['unicaen-mail']['connection_config']['auto_tls'] qui est maintenant obligatoire dans UnicaenMail
A utilisé uniquement pour une authentification tls (port 465).
Avec un protocole non sécurisé (port 25) ou en startTLS (port 587) : mettre a false

- A revoir : est-ce que l'on peux merger la config 'tls' (et 'auto_tls')

- [Bug-fix] : datatable de la page d'index qui ne se reinitialisait pas
+5 −0
Original line number Diff line number Diff line
@@ -18,7 +18,12 @@ return [
        'transport_options' => [
            'host' => 'XXX.XXX.XX',
            'port' => 'XX',
            // Si protocle TLS (port 465) : true || En non sécurisé (port 25) ou en START_TLS (port 587) : false
            'tls'  => true,
            //'auto_tls' => false, //pour forcer tls=> false dans certains cas particuliers
            'use_auth' => true,
            'username' => "XXX",
            'password' => "YYY",
        ],
        /**
         * Adresses des redirections si do_not_send est à true
+8 −4
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace UnicaenMail\Service\Mail;

use Doctrine\ORM\EntityManager;
use PHPUnit\Framework\Exception;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
@@ -25,21 +26,24 @@ class MailServiceFactory {
        $port  = ($config['transport_options']['port']) ?? null;

        //TODO : a voir si l'on garde tls a true par défaut et si l'on peut merger avec use_auth
        //A priori non car on peut utiliser le protocole starttls qui requiére que tls soit a false mais que l'on envoie quand même les paramétres d'authentifiation
        //Gestion de cas ou l'auto_tls s'active pour une raison a déterminer, ce qui skip le paramétre tls=true. TODO : a revoir
        $tls = ($config['transport_options']['tls']) ?? true;
        $tls = ($config['transport_options']['tls']) ?? null;
        if(!isset($tls)){
            throw new NotFoundConfigException("La clé d'accès aux paramètres de configuration ['unicaen-mail']['transport_options']['tls'] n'est pas définie.");
        }
        $transport = new EsmtpTransport(host: $host, port: $port, tls: $tls);
        $auto_tls = ($config['transport_options']['auto_tls']) ?? null;
        if(isset($auto_tls)){
            $transport->setAutoTLS($auto_tls);
        }
        $transport = new EsmtpTransport(host: $host, port: $port, tls: $tls);

        $useAuth =  ($config['transport_options']['connection_config']['use_auth']) ?? false;

        if($useAuth){
            $username = ($config['transport_options']['connection_config']['username']) ?? null;
            $password = ($config['transport_options']['connection_config']['password']) ?? null;
            if(!isset($username) || !isset($password)){
                throw new NotFoundConfigException("Paramétres d'authentifications non définis");
                throw new NotFoundConfigException("Les paramétres d'authentifications ne sont pas définies.");
            }
            $transport->setUsername($username);
            $transport->setPassword($password);