src/Service/UserChecker.php line 61

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Enum\DocumentTypeOrganizationEnum;
  4. use App\Enum\DocumentTypeUserEnum;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Evo\Infrastructure\MappingORM\User;
  7. use Lexik\Bundle\JWTAuthenticationBundle\Encoder\JWTEncoderInterface;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. class UserChecker
  10. {
  11.     private TranslatorInterface $translator;
  12.     private JWTEncoderInterface $JWTEncoder;
  13.     private EntityManagerInterface $entityManager;
  14.     /**
  15.      * UserChecker constructor.
  16.      */
  17.     public function __construct(
  18.         TranslatorInterface $translator,
  19.         JWTEncoderInterface $JWTEncoder,
  20.         EntityManagerInterface $entityManager
  21.     ) {
  22.         $this->translator $translator;
  23.         $this->JWTEncoder $JWTEncoder;
  24.         $this->entityManager $entityManager;
  25.     }
  26.     public function getMandatoryDocuments($isHosted false)
  27.     {
  28.         $docs = [
  29.             DocumentTypeUserEnum::NIC_RECTO,
  30.             DocumentTypeUserEnum::NIC_VERSO,
  31.             DocumentTypeUserEnum::NIC_RECTO_VERSO,
  32.             DocumentTypeUserEnum::ADDRESS_PROOF,
  33.             DocumentTypeUserEnum::PASSPORT,
  34.             DocumentTypeUserEnum::RESIDENCE_PERMIT,
  35.             DocumentTypeOrganizationEnum::RIB,
  36.         ];
  37.         if ($isHosted) {
  38.             $docs array_merge($docs, [
  39.                 DocumentTypeUserEnum::HOST_ADDRESS_PROOF,
  40.                 DocumentTypeUserEnum::HOST_NIC_RECTO,
  41.                 DocumentTypeUserEnum::HOST_NIC_VERSO,
  42.                 DocumentTypeUserEnum::HOST_NIC_RECTO_VERSO,
  43.                 DocumentTypeUserEnum::HOST_CERTIFICATE,
  44.             ]);
  45.         }
  46.         $list = [];
  47.         foreach ($docs as $docType) {
  48.             $list[$docType] = $this->translator->trans(DocumentTypeUserEnum::getReadableValue($docType));
  49.         }
  50.         return $list;
  51.     }
  52.     public function checkUserByToken($token)
  53.     {
  54.         if (!$token) {
  55.             return false;
  56.         }
  57.         $decodedToken $this->JWTEncoder->decode($token);
  58.         if ([] === $decodedToken) {
  59.             return false;
  60.         }
  61.         $email $decodedToken['username'];
  62.         $userRepo $this->entityManager->getRepository(User::class);
  63.         return $userRepo->findOneBy(['email' => $email]);
  64.     }
  65. }