src/Security/PermisoVoter.php line 25

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: Pablo
  5.  * Date: 1/31/2019
  6.  * Time: 3:05 PM
  7.  */
  8. namespace App\Security;
  9. use App\Entity\Pedido1;
  10. use App\Entity\Rol;
  11. use App\Entity\RolPermiso;
  12. use App\Entity\Usuario;
  13. use App\Entity\Permiso;
  14. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  15. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Symfony\Component\Security\Core\Security;
  18. class PermisoVoter extends Voter
  19. {
  20.     private $security;
  21.     private $em;
  22.     public function __construct(Security $securityEntityManagerInterface $em)
  23.     {
  24.         $this->security $security;
  25.         $this->em $em;
  26.     }
  27.     protected function supports($attribute$subject)
  28.     {
  29.         $permiso_entity $this->em->getRepository(Permiso::class)->findOneBy(['permiso'=>$attribute]);
  30.         if (!$permiso_entity){
  31.             return false;
  32.         }
  33.         return true;
  34.     }
  35.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  36.     {
  37.         $user $token->getUser();
  38.         $roles $user->getRoles();
  39.         foreach ($roles as $rol){
  40.             $rol_entity $this->em->getRepository(Rol::class)->findOneBy(['rol'=>$rol]);
  41.             $permisos $this->em->getRepository(RolPermiso::class)->findBy(['idRol'=>$rol_entity]);
  42.             foreach ($permisos as $permiso){
  43.                 if ($attribute === $permiso->getIdPermiso()->getPermiso()){
  44.                     return true;
  45.                 }
  46.             }
  47.         }
  48.         return false;
  49.     }
  50. }