src/Knitink/UniverseBundle/Security/SensorVoter.php line 20

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of the Knitink Project package.
  4.  *
  5.  * Created by Globunet Soluciones Tecnologicas, SL. on 13/01/17. <info@globunet.com>
  6.  * Copyright (c) 2016 Knitink Technologies, SL. All rights reserved.
  7.  */
  8. namespace Knitink\UniverseBundle\Security;
  9. use Knitink\UniverseBundle\Entity\Enum\PlayerProfile;
  10. use Knitink\UniverseBundle\Entity\Enum\SensorType;
  11. use Knitink\UniverseBundle\Entity\Sensor;
  12. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  13. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  14. use Symfony\Component\HttpFoundation\Session\Session;
  15. use Globunet\DinamicDatabaseBundle\Services\DatabaseConnector;
  16. class SensorVoter extends Voter
  17. {
  18.     private $databaseConnector;
  19.     private $session;
  20.     public function __construct(DatabaseConnector $databaseConnectorSession $session)
  21.     {
  22.         $this->databaseConnector $databaseConnector;
  23.         $this->session $session;
  24.     }
  25.     protected function supports($attribute$subject)
  26.     {
  27.         return $subject instanceof Sensor && $attribute === 'VOTER_KNITINK_UNIVERSE_SENSOR';
  28.     }
  29.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  30.     {
  31.         $user $token->getUser();
  32.         if(($user instanceof \Symfony\Component\Security\Core\User\User || $user instanceof \Knitink\CoreBundle\Entity\User)){
  33.             if( in_array("ROLE_SUPER_ADMIN"$user->getRoles()) ||
  34.                 in_array("ROLE_KNK_UNIV_SUPER_ADMIN"$user->getRoles()) ||
  35.                 in_array("ROLE_KNK_UNIV_ADMIN"$user->getRoles()) ||
  36.                 in_array("VOTER_KNITINK_UNIVERSE_SENSOR"$user->getRoles())
  37.             )
  38.                 return true;
  39.         }
  40.         if (!$user instanceof \Knitink\CoreBundle\Entity\User) {
  41.             return false;
  42.         }
  43.         return $this->checker($user$attribute$subject);
  44.     }
  45.     public function checker($user$attribute$subject$em null)
  46.     {
  47.         // Sensor de Nivel
  48.         $sensorType SensorType::WATER_DRAIN_VOLUME;
  49.         $modelVersion $this->session->get('modelVersion');
  50.         if($modelVersion 2375){
  51.             $sensorType 11;
  52.         }
  53.         /*
  54.         echo $sensorType."<br>";
  55.         echo $subject->getType()."<br>";
  56.         echo "ModelVersion: ".$modelVersion."<br>";
  57.         echo "teamId: ".$this->session->get('teamId')."<br>";
  58.         */
  59.         if($subject->getType() == $sensorType && PlayerProfile::isDrainCheck($subject->getPlayer()->getProfile())){
  60.             return false;
  61.         }
  62.         return true;
  63.     }
  64. }