Sfoglia il codice sorgente

fix phpstan errors

Olivier Massot 2 mesi fa
parent
commit
233fe14cc0

+ 0 - 25
src/ApiResources/HelloAsso/CallbackForwarding.php

@@ -1,25 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\ApiResources\HelloAsso;
-
-use ApiPlatform\Metadata\ApiProperty;
-use ApiPlatform\Metadata\ApiResource;
-use ApiPlatform\Metadata\Get;
-use App\State\Provider\HelloAsso\CallbackForwardingProvider;
-
-/**
- * Ressource publique pour gérer les redirections de callback HelloAsso.
- */
-#[ApiResource(
-    operations: [
-        new Get(
-            uriTemplate: '/public/helloasso/callback',
-        ),
-    ],
-    provider: CallbackForwardingProvider::class,
-)]
-class CallbackForwarding
-{
-}

+ 1 - 1
src/ApiResources/HelloAsso/EventForm.php

@@ -52,7 +52,7 @@ class EventForm
 
     /**
      * Titre du formulaire
-     * @var bool
+     * @var string|null
      */
     private ?string $title = null;
 

+ 1 - 1
src/Entity/Booking/AbstractBooking.php

@@ -44,7 +44,7 @@ abstract class AbstractBooking
     #[ORM\GeneratedValue]
     protected ?int $id = null;
 
-    #[ORM\Column]
+    #[ORM\Column(nullable: true)]
     protected ?string $name = null;
 
     /** @var Collection<int, Access> */

+ 2 - 0
src/Entity/HelloAsso/HelloAsso.php

@@ -1,5 +1,7 @@
 <?php
 
+declare(strict_types=1);
+
 namespace App\Entity\HelloAsso;
 
 use App\Entity\Organization\Organization;

+ 3 - 0
src/Repository/HelloAsso/HelloAssoRepository.php

@@ -17,6 +17,9 @@ class HelloAssoRepository extends ServiceEntityRepository
         parent::__construct($registry, HelloAsso::class);
     }
 
+    /**
+     * @return array<HelloAsso>
+     */
     public function findOldRefreshTokens(int $age): array
     {
         $dateLimite = DatesUtils::new('-'.$age.' days');

+ 0 - 2
src/Service/Cron/Job/CleanTempFiles.php

@@ -9,7 +9,6 @@ use App\Enum\Core\FileHostEnum;
 use App\Enum\Core\FileStatusEnum;
 use App\Repository\Core\FileRepository;
 use App\Service\Cron\BaseCronJob;
-use App\Service\File\Storage\LocalStorage;
 use App\Service\Utils\DatesUtils;
 use Doctrine\DBAL\Connection;
 use Doctrine\ORM\EntityManagerInterface;
@@ -33,7 +32,6 @@ class CleanTempFiles extends BaseCronJob
     public function __construct(
         private Connection $connection,
         private FileRepository $fileRepository,
-        private LocalStorage $storage,
         private EntityManagerInterface $entityManager,
     ) {
         parent::__construct();

+ 0 - 2
src/Service/Cron/Job/CleanWorkToDo.php

@@ -10,7 +10,6 @@ use App\Entity\Core\File;
 use App\Enum\Core\FileHostEnum;
 use App\Enum\Core\FileStatusEnum;
 use App\Service\Cron\BaseCronJob;
-use App\Service\File\Storage\LocalStorage;
 use App\Service\Utils\DatesUtils;
 use Doctrine\DBAL\Connection;
 use Doctrine\ORM\EntityManagerInterface;
@@ -33,7 +32,6 @@ class CleanWorkToDo extends BaseCronJob
     public function __construct(
         private Connection $connection,
         private EntityManagerInterface $entityManager,
-        private LocalStorage $storage,
     ) {
         parent::__construct();
     }

+ 0 - 2
src/Service/Cron/Job/FilesGarbageCollector.php

@@ -10,7 +10,6 @@ use App\Enum\Core\FileStatusEnum;
 use App\Repository\Core\FileRepository;
 use App\Service\Cron\BaseCronJob;
 use App\Service\File\Storage\LocalStorage;
-use Doctrine\DBAL\Connection;
 use Doctrine\ORM\QueryBuilder;
 use JetBrains\PhpStorm\Pure;
 
@@ -24,7 +23,6 @@ class FilesGarbageCollector extends BaseCronJob
 {
     #[Pure]
     public function __construct(
-        private Connection $connection,
         private FileRepository $fileRepository,
         private LocalStorage $storage,
     ) {

+ 3 - 0
src/Service/Cron/Job/RefreshHelloassoTokens.php

@@ -110,6 +110,9 @@ class RefreshHelloassoTokens extends BaseCronJob
         $this->logger->info('Tokens refreshed');
     }
 
+    /**
+     * @return array<HelloAsso>
+     */
     protected function getHelloassoAccounts(): array
     {
         $helloassoRepository = $this->entityManager->getRepository(HelloAsso::class);

+ 12 - 6
src/Service/HelloAsso/HelloAssoService.php

@@ -36,14 +36,12 @@ class HelloAssoService extends ApiRequestService
         HttpClientInterface $client,
         private readonly OrganizationRepository $organizationRepository,
         private readonly EventRepository $eventRepository,
-        private readonly string $baseUrl,
         private readonly string $publicAppBaseUrl,
         private readonly string $helloAssoApiBaseUrl,
         private readonly string $helloAssoAuthBaseUrl,
         private readonly string $helloAssoClientId,
         private readonly string $helloAssoClientSecret,
         private readonly EntityManagerInterface $entityManager,
-        private readonly LoggerInterface $logger
     ) {
         parent::__construct($client);
     }
@@ -60,8 +58,8 @@ class HelloAssoService extends ApiRequestService
      */
     public function setupOpentalentDomain(): void
     {
-        $accessToken = $this->fetchAccessToken(null);
-        $this->updateDomain($accessToken, 'https://*.opentalent.fr');
+        $tokens = $this->fetchAccessToken(null, null);
+        $this->updateDomain($tokens['access_token'], 'https://*.opentalent.fr');
     }
 
     /**
@@ -202,6 +200,10 @@ class HelloAssoService extends ApiRequestService
         $this->entityManager->flush();
     }
 
+    /**
+     * @param array<string> $routeParts
+     * @return array<string, mixed>
+     */
     public function getResource(HelloAsso $helloAssoEntity, array $routeParts): array {
         if (!$helloAssoEntity->getOrganizationSlug() || !$helloAssoEntity->getToken()) {
             throw new \RuntimeException('HelloAsso entity incomplete');
@@ -235,6 +237,9 @@ class HelloAssoService extends ApiRequestService
         return json_decode($response->getContent(), true, 512, JSON_THROW_ON_ERROR);
     }
 
+    /**
+     * @return array<EventForm>
+     */
     public function getHelloAssoEventForms(int $organizationId): array
     {
         $helloAssoEntity = $this->getHelloAssoEntityFor($organizationId);
@@ -302,7 +307,7 @@ class HelloAssoService extends ApiRequestService
 
     /**
      * Construit un objet EventForm à partir des données retournées par l'api HelloAsso.
-     * @param array $formData
+     * @param array<string, mixed> $formData
      * @return EventForm
      */
     protected function makeHelloAssoEventForm(array $formData): EventForm {
@@ -413,7 +418,8 @@ class HelloAssoService extends ApiRequestService
         }
 
         // Les tokens ont une durée de validité de 30min, on les rafraichit passé 25min.
-        $needsRefreshing = $helloAssoEntity->getRefreshTokenCreatedAt()->add(new \DateInterval('PT25M')) < DatesUtils::new();
+        $refreshTokenCreatedAt = \DateTime::createFromInterface($helloAssoEntity->getRefreshTokenCreatedAt());
+        $needsRefreshing = $refreshTokenCreatedAt->add(new \DateInterval('PT25M')) < DatesUtils::new();
         if (!$needsRefreshing) {
             return $helloAssoEntity;
         }

+ 4 - 0
src/Service/Security/OAuthPkceGenerator.php

@@ -6,6 +6,10 @@ namespace App\Service\Security;
 
 class OAuthPkceGenerator
 {
+    /**
+     * @return array<string, string>
+     * @throws \Random\RandomException
+     */
     public static function generatePkce(): array
     {
         // 1. Générer un code_verifier (entre 43 et 128 caractères)

+ 1 - 1
src/State/Processor/HelloAsso/ConnectionRequestProcessor.php

@@ -11,9 +11,9 @@ use App\ApiResources\HelloAsso\ConnectionRequest;
 use App\Entity\Access\Access;
 use App\Service\HelloAsso\HelloAssoService;
 use App\Service\MercureHub;
-use http\Client\Response;
 use Psr\Log\LoggerInterface;
 use Symfony\Bundle\SecurityBundle\Security;
+use Symfony\Component\HttpFoundation\Response;
 
 /**
  * Processor pour la ressource ConnectionRequest.

+ 1 - 3
src/State/Processor/HelloAsso/UnlinkRequestProcessor.php

@@ -10,9 +10,8 @@ use ApiPlatform\State\ProcessorInterface;
 use App\ApiResources\HelloAsso\UnlinkRequest;
 use App\Entity\Access\Access;
 use App\Service\HelloAsso\HelloAssoService;
-use App\Service\MercureHub;
-use http\Client\Response;
 use Symfony\Bundle\SecurityBundle\Security;
+use Symfony\Component\HttpFoundation\Response;
 
 /**
  * Processor pour la ressource ConnectionRequest.
@@ -22,7 +21,6 @@ class UnlinkRequestProcessor implements ProcessorInterface
     public function __construct(
         private readonly HelloAssoService $helloAssoService,
         private Security                  $security,
-        private MercureHub                $mercureHub,
     ) {
     }
 

+ 1 - 1
src/State/Provider/HelloAsso/AuthUrlProvider.php

@@ -30,7 +30,7 @@ final class AuthUrlProvider implements ProviderInterface
      *
      * @throws \Exception
      */
-    public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?AuthUrl
+    public function provide(Operation $operation, array $uriVariables = [], array $context = []): AuthUrl
     {
         if ($operation instanceof GetCollection) {
             throw new \RuntimeException('not supported', Response::HTTP_METHOD_NOT_ALLOWED);

+ 0 - 49
src/State/Provider/HelloAsso/CallbackForwardingProvider.php

@@ -1,49 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\State\Provider\HelloAsso;
-
-use ApiPlatform\Metadata\GetCollection;
-use ApiPlatform\Metadata\Operation;
-use ApiPlatform\State\ProviderInterface;
-use App\ApiResources\HelloAsso\CallbackForwarding;
-use App\Service\HelloAsso\ConnectionService;
-use Symfony\Component\HttpFoundation\RedirectResponse;
-use Symfony\Component\HttpFoundation\RequestStack;
-use Symfony\Component\HttpFoundation\Response;
-
-/**
- * Provider pour la ressource CallbackForwarding HelloAsso.
- */
-final class CallbackForwardingProvider implements ProviderInterface
-{
-    public function __construct(
-        private ConnectionService $connectionService,
-        private RequestStack $requestStack,
-    ) {
-    }
-
-    /**
-     * @param mixed[] $uriVariables
-     * @param mixed[] $context
-     *
-     * @throws \Exception
-     */
-    public function provide(Operation $operation, array $uriVariables = [], array $context = []): RedirectResponse
-    {
-        if ($operation instanceof GetCollection) {
-            throw new \RuntimeException('not supported', Response::HTTP_METHOD_NOT_ALLOWED);
-        }
-
-        $request = $this->requestStack->getCurrentRequest();
-        if (!$request) {
-            throw new \RuntimeException('No current request available');
-        }
-
-        $queryParameters = $request->query->all();
-        $redirectUrl = $this->connectionService->forwardCallbackTo($queryParameters);
-
-        return new RedirectResponse($redirectUrl);
-    }
-}