vendor/uvdesk/api-bundle/Providers/ApiCredentials.php line 20

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\ApiBundle\Providers;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\HttpFoundation\RequestStack;
  5. use Symfony\Bundle\SecurityBundle\Security\FirewallMap;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. use Symfony\Component\DependencyInjection\ContainerInterface;
  8. use Symfony\Component\Security\Core\User\UserProviderInterface;
  9. use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
  10. use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
  11. use Webkul\UVDesk\CoreFrameworkBundle\Entity\User;
  12. use Webkul\UVDesk\CoreFrameworkBundle\Entity\UserInstance;
  13. class ApiCredentials implements UserProviderInterface
  14. {
  15.     public function __construct(FirewallMap $firewallContainerInterface $containerRequestStack $requestStackEntityManagerInterface $entityManager)
  16.     {
  17.         $this->firewall $firewall;
  18.         $this->container $container;
  19.         $this->requestStack $requestStack
  20.         $this->entityManager $entityManager;
  21.     }
  22.     public function loadUserByUsername($username)
  23.     {
  24.         $queryBuilder $this->entityManager->createQueryBuilder()
  25.             ->select('user, userInstance')
  26.             ->from(User::class, 'user')
  27.             ->leftJoin(UserInstance::class, 'userInstance''WITH''user.id = userInstance.user')
  28.             ->leftJoin('userInstance.supportRole''supportRole')
  29.             ->where('user.email = :email')->setParameter('email'trim($username))
  30.             ->andWhere('userInstance.isActive = :isActive')->setParameter('isActive'true)
  31.             ->andWhere('supportRole.id = :roleOwner OR supportRole.id = :roleAdmin OR supportRole.id = :roleAgent')
  32.             ->setParameter('roleOwner'1)
  33.             ->setParameter('roleAdmin'2)
  34.             ->setParameter('roleAgent'3)
  35.             ->setMaxResults(1)
  36.         ;
  37.         
  38.         $response $queryBuilder->getQuery()->getResult();
  39.         try {
  40.             if (!empty($response) && is_array($response)) {
  41.                 list($user$userInstance) = $response;
  42.                 // Set currently active instance
  43.                 $user->setCurrentInstance($userInstance);
  44.                 $user->setRoles((array) $userInstance->getSupportRole()->getCode());
  45.                 return $user;
  46.             }
  47.         } catch (\Exception $e) {
  48.             // Do nothing...
  49.         }
  50.         throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.'$username));
  51.     }
  52.     public function refreshUser(UserInterface $user)
  53.     {
  54.         
  55.         if ($this->supportsClass(get_class($user))) {
  56.             return $this->loadUserByUsername($user->getEmail());
  57.         }
  58.         throw new UnsupportedUserException('Invalid user type');
  59.     }
  60.     public function supportsClass($class)
  61.     {
  62.         return User::class === $class;
  63.     }
  64. }