src/Security/Voter/PraticaDashboardVoter.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\User;
  4. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  6. use Symfony\Component\Security\Core\Security;
  7. use Symfony\Component\Security\Core\User\UserInterface;
  8. class PraticaDashboardVoter extends Voter
  9. {
  10.     // group must be separated by single underline, multiple words could be separated by double underline
  11.     // for example DASHBOARD_MEMO_VISUALIZZA__ASSEGNATARIO -> DASHBOARD -> MEMO -> VISUALIZZA ASSEGNATARIO
  12.     // Don't use double underline in constant names
  13.     // translate each expression separately at messages.it.yml
  14.     // Add __disabled suffix to make permission disabled and checked by default
  15.     const FILE_VISUALIZZA  'PRATICA__DASHBOARD_FILE_VISUALIZZA';
  16.     const FILE_CREA  'PRATICA__DASHBOARD_FILE_CREA';
  17.     const FILE_MODIFICA  'PRATICA__DASHBOARD_FILE_MODIFICA';
  18.     const FILE_CANCELLA  'PRATICA__DASHBOARD_FILE_CANCELLA';
  19.     const SCADENZA_VISUALIZZA_TUTTI  'PRATICA__DASHBOARD_SCADENZA_VISUALIZZA__TUTTI__DISABLED';
  20.     const SCADENZA_CREA  'PRATICA__DASHBOARD_SCADENZA_CREA';
  21.     const SCADENZA_MODIFICA  'PRATICA__DASHBOARD_SCADENZA_MODIFICA';
  22.     const SCADENZA_CANCELLA  'PRATICA__DASHBOARD_SCADENZA_CANCELLA';
  23.     /*const PLAN_VISUALIZZA_ORGANIZZATORE  = 'PRATICA__DASHBOARD_PLAN_VISUALIZZA__ORGANIZZATORE__DISABLED';
  24.     const PLAN_VISUALIZZA_TUTTI  = 'PRATICA__DASHBOARD_PLAN_VISUALIZZA__TUTTI';
  25.     const PLAN_CREA  = 'PRATICA__DASHBOARD_PLAN_CREA';
  26.     const PLAN_MODIFICA  = 'PRATICA__DASHBOARD_PLAN_MODIFICA';
  27.     const PLAN_CANCELLA  = 'PRATICA__DASHBOARD_PLAN_CANCELLA';*/
  28.     const INOUT_ACCESSO_ALLA_SEZIONE  'PRATICA__DASHBOARD_INOUT_ACCESSO__ALLA__SEZIONE';
  29.     const SPESE_ACCESSO_ALLA_SEZIONE  'PRATICA__DASHBOARD_SPESE_ACCESSO__ALLA__SEZIONE';
  30.     const FATTURE_ACCESSO_ALLA_SEZIONE  'PRATICA__DASHBOARD_FATTURE_ACCESSO__ALLA__SEZIONE';
  31.     const COPIE_VERBALE_VISUALIZZA  'PRATICA__DASHBOARD_COPIE__VERBALE_VISUALIZZA__DISABLED';
  32.     const ORDER 11;
  33.     const PERMISSIONS_LIST = [
  34.         self::FILE_VISUALIZZA,
  35.         self::FILE_CREA,
  36.         self::FILE_MODIFICA,
  37.         self::FILE_CANCELLA,
  38.         self::SCADENZA_CREA,
  39.         self::SCADENZA_MODIFICA,
  40.         self::SCADENZA_CANCELLA,
  41.         self::SCADENZA_VISUALIZZA_TUTTI,
  42.         /*self::PLAN_VISUALIZZA_ORGANIZZATORE,
  43.         self::PLAN_VISUALIZZA_TUTTI,
  44.         self::PLAN_CREA,
  45.         self::PLAN_MODIFICA,
  46.         self::PLAN_CANCELLA,*/
  47.         self::INOUT_ACCESSO_ALLA_SEZIONE,
  48.         self::SPESE_ACCESSO_ALLA_SEZIONE,
  49.         self::FATTURE_ACCESSO_ALLA_SEZIONE,
  50.         self::COPIE_VERBALE_VISUALIZZA,
  51.     ];
  52.     private $security;
  53.     public function __construct(Security $security)
  54.     {
  55.         $this->security $security;
  56.     }
  57.     protected function supports($attribute$subject)
  58.     {
  59.         // if the attribute isn't one we support, return false
  60.         if (!in_array($attributeself::PERMISSIONS_LIST)) {
  61.             return false;
  62.         }
  63.         return true;
  64.     }
  65.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  66.     {
  67.         $user $token->getUser();
  68.         // if the user is anonymous, do not grant access
  69.         if (!$user instanceof UserInterface) {
  70.             return false;
  71.         }
  72.         if($this->security->isGranted(User::ROLE_SUPER_ADMIN)) return true;
  73.         return in_array($attribute$user->getPermissions());
  74.     }
  75. }