| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- declare(strict_types=1);
- namespace App\Repository\Access;
- use App\Entity\Access\Access;
- use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
- use Doctrine\Persistence\ManagerRegistry;
- use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
- use Symfony\Component\HttpFoundation\RequestStack;
- /**
- * @method Access|null find($id, $lockMode = null, $lockVersion = null)
- * @method Access|null findOneBy(array $criteria, array $orderBy = null)
- * @method Access[] findAll()
- * @method Access[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
- */
- final class AccessRepository extends ServiceEntityRepository implements UserLoaderInterface
- {
- const ACCESS_NAME_HEADER = 'X-AccessId';
- private RequestStack $requestStack;
- public function __construct(ManagerRegistry $registry, RequestStack $requestStack)
- {
- parent::__construct($registry, Access::class);
- $this->requestStack = $requestStack;
- }
- /**
- * Méthode permettant de fournir un userProvider custom (voir config provider : access_provider)
- * @param string $username
- * @return mixed|\Symfony\Component\Security\Core\User\UserInterface|null
- * @throws \Doctrine\ORM\NonUniqueResultException
- */
- public function loadUserByUsername(string $username)
- {
- $entityManager = $this->getEntityManager();
- $id = $this->requestStack->getMasterRequest()->headers->get(self::ACCESS_NAME_HEADER);
- return $entityManager->createQuery(
- 'SELECT a
- FROM App\Entity\Access\Access a
- INNER JOIN a.person p
- WHERE p.username = :query AND a.id = :id'
- )
- ->setParameter('query', $username)
- ->setParameter('id', $id)
- ->getOneOrNullResult();
- }
- // /**
- // * @return Access[] Returns an array of Access objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('a')
- ->andWhere('a.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('a.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
- /*
- public function findOneBySomeField($value): ?Access
- {
- return $this->createQueryBuilder('a')
- ->andWhere('a.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
- }
|