|
|
@@ -1,51 +0,0 @@
|
|
|
-<?php
|
|
|
-declare(strict_types=1);
|
|
|
-
|
|
|
-namespace App\Service\HelloAsso;
|
|
|
-
|
|
|
-use App\Entity\Organization\Organization;
|
|
|
-use App\Service\Rest\ApiRequestService;
|
|
|
-use App\Service\Utils\UrlBuilder;
|
|
|
-use Doctrine\ORM\EntityManagerInterface;
|
|
|
-use Symfony\Contracts\HttpClient\HttpClientInterface;
|
|
|
-use Symfony\Contracts\HttpClient\ResponseInterface;
|
|
|
-use Symfony\Component\HttpKernel\Exception\HttpException;
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * Service de connexion à HelloAsso.
|
|
|
- *
|
|
|
- * @see doc/helloasso.md
|
|
|
- * @see https://dev.helloasso.com/docs/mire-authorisation
|
|
|
- */
|
|
|
-class ConnectionService extends ApiRequestService
|
|
|
-{
|
|
|
- /**
|
|
|
- * Retourne l'URL de redirection pour le callback HelloAsso.
|
|
|
- * Valide que l'URL de destination correspond au format autorisé et transmet
|
|
|
- * les paramètres de query (excepté 'state').
|
|
|
- *
|
|
|
- * @param array<string, string> $queryParameters Paramètres de la requête originale
|
|
|
- * @return string L'URL vers laquelle rediriger l'utilisateur
|
|
|
- * @throws HttpException Si le paramètre 'state' est manquant ou l'URL invalide
|
|
|
- */
|
|
|
- public function forwardCallbackTo(array $queryParameters): string
|
|
|
- {
|
|
|
- if (!isset($queryParameters['state']) || empty($queryParameters['state'])) {
|
|
|
- throw new HttpException(400, 'Missing required state parameter');
|
|
|
- }
|
|
|
-
|
|
|
- $redirectUrl = $queryParameters['state'];
|
|
|
-
|
|
|
- // Validation du format de l'URL (doit être https://***.opentalent.fr?***)
|
|
|
- if (!preg_match('/^https:\/\/[^\/]+\.opentalent\.fr(\/[\w-]+)*(\?.*)?$/', $redirectUrl)) {
|
|
|
- throw new HttpException(400, 'Invalid redirect URL format. Must be https://***.opentalent.fr/...');
|
|
|
- }
|
|
|
-
|
|
|
- // Supprimer le paramètre 'state' des paramètres à transmettre
|
|
|
- $forwardParams = $queryParameters;
|
|
|
- unset($forwardParams['state']);
|
|
|
-
|
|
|
- return UrlBuilder::concatParameters($redirectUrl, $forwardParams);
|
|
|
- }
|
|
|
-}
|