feat: add GANDI provider

This commit is contained in:
Maël Gangloff
2024-08-06 03:38:00 +02:00
parent da1ae4cb8e
commit a603a2c7a0
10 changed files with 226 additions and 27 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Controller;
use App\Config\Connector\GandiConnector;
use App\Config\Connector\OvhConnector;
use App\Config\ConnectorProvider;
use App\Entity\Connector;
@@ -13,6 +14,8 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
use Symfony\Contracts\HttpClient\HttpClientInterface;
class ConnectorController extends AbstractController
{
@@ -42,6 +45,7 @@ class ConnectorController extends AbstractController
/**
* @throws \Exception
* @throws TransportExceptionInterface
*/
#[Route(
path: '/api/connectors',
@@ -52,7 +56,7 @@ class ConnectorController extends AbstractController
],
methods: ['POST']
)]
public function createConnector(Request $request): Connector
public function createConnector(Request $request, HttpClientInterface $client): Connector
{
$connector = $this->serializer->deserialize($request->getContent(), Connector::class, 'json', ['groups' => 'connector:create']);
/** @var User $user */
@@ -68,15 +72,19 @@ class ConnectorController extends AbstractController
if (ConnectorProvider::OVH === $provider) {
$authData = OvhConnector::verifyAuthData($connector->getAuthData());
$connector->setAuthData($authData);
$this->logger->info('User {username} authentication data with the OVH provider has been validated.', [
'username' => $user->getUserIdentifier(),
]);
} elseif (ConnectorProvider::GANDI === $provider) {
$authData = GandiConnector::verifyAuthData($connector->getAuthData(), $client);
} else {
throw new \Exception('Unknown provider');
}
$connector->setAuthData($authData);
$this->logger->info('User {username} authentication data with the {provider} provider has been validated.', [
'username' => $user->getUserIdentifier(),
'provider' => $provider->value,
]);
$this->logger->info('The new API connector requested by {username} has been successfully registered.', [
'username' => $user->getUserIdentifier(),
]);