src/Security/AccessManager.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use App\Entity\AccessControl;
  4. use App\Repository\AccessControlRepository;
  5. use App\Service\Access;
  6. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  7. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  8. class AccessManager extends Voter
  9. {
  10.     private $accessService;
  11.     private $accessControlRepository;
  12.     public function __construct(Access $accessServiceAccessControlRepository $accessControlRepository)
  13.     {
  14.         $this->accessService $accessService;
  15.         $this->accessControlRepository $accessControlRepository;
  16.     }
  17.     protected function supports($attribute$subject)
  18.     {
  19.         $features $this->accessControlRepository->findAll();
  20.         $features array_values(array_unique(array_map(function(AccessControl $ac) {
  21.             return $ac->getFeature();
  22.         }, $features)));
  23.         return in_array($attribute$features);
  24.     }
  25.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  26.     {
  27.         return $this->accessService->getAccessControl($attribute$subject === true);
  28.     }
  29. }