vendor/uvdesk/core-framework/Providers/UserProvider.php line 65

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