issue-19: séparation des exceptions pour éviter les erreurs génériques, message personalisé par type d'erreur

This commit is contained in:
2023-06-19 15:56:55 +02:00
parent 5aacd981b4
commit 3e45119684
13 changed files with 143 additions and 25 deletions

View File

@ -2,6 +2,10 @@
namespace App\Service;
use App\SQLLogin\Exception\DatabaseConnectionException;
use App\SQLLogin\Exception\DataToFetchConfigurationException;
use App\SQLLogin\Exception\LoginElementsConfigurationException;
use App\SQLLogin\Exception\NullDataToFetchException;
use App\SQLLogin\SQLLoginConnect;
use App\SQLLogin\SQLLoginRequest;
use PDO;
@ -23,16 +27,25 @@ class SQLLoginService extends AbstractController
{
try {
$dbh = $this->getConnection();
} catch (PDOException $e) {
$this->loggerInterface->critical($e->getMessage());
throw new DatabaseConnectionException($e->getMessage());
}
try {
// forge de la requête
$request = $this->sqlLoginRequest->getRequestScope();
} catch (NullDataToFetchException $e) {
throw new DataToFetchConfigurationException($e->getMessage());
}
try {
// Préparation de la requête
$query = $dbh->prepare($request);
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]);
$datas = $query->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
\Sentry\captureException($e);
$this->loggerInterface->critical($e->getMessage());
throw new PDOException();
throw new DataToFetchConfigurationException($e->getMessage());
}
return $datas;
@ -42,13 +55,21 @@ class SQLLoginService extends AbstractController
{
try {
$dbh = $this->getConnection();
$request = $this->sqlLoginRequest->getRequestPassword();
} catch (PDOException $e) {
$this->loggerInterface->critical($e->getMessage());
throw new DatabaseConnectionException($e->getMessage());
}
// forge de la requête
$request = $this->sqlLoginRequest->getRequestPassword();
try {
$query = $dbh->prepare($request);
$query->execute([$this->sqlLoginRequest->getLoginColumnName() => $login]);
$password = $query->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
$this->loggerInterface->critical($e->getMessage());
throw new PDOException();
throw new LoginElementsConfigurationException($e->getMessage());
}
if ($password) {
return [