src/Security/Authorization/Voter/ProductConfigurationItemVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace App\Security\Authorization\Voter;
  3. use App\Entity\ProductConfigurationItem;
  4. use App\Entity\User;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  7. class ProductConfigurationItemVoter extends Voter
  8. {
  9.     const CREATE  'create';
  10.     const READ    'read';
  11.     const UPDATE  'update';
  12.     const DELETE  'delete';
  13.     /**
  14.      * {@inheritDoc}
  15.      */
  16.     protected function supports($attribute$subject): bool
  17.     {
  18.         $attributes = [
  19.             self::CREATE,
  20.             self::READ,
  21.             self::UPDATE,
  22.             self::DELETE,
  23.         ];
  24.         if (!in_array($attribute$attributes)) {
  25.             return false;
  26.         }
  27.         if (!$subject instanceof ProductConfigurationItem) {
  28.             return false;
  29.         }
  30.         return true;
  31.     }
  32.     /**
  33.      * {@inheritDoc}
  34.      */
  35.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  36.     {
  37.         $user $token->getUser();
  38.         if (!$user instanceof User) {
  39.             return false;
  40.         }
  41.         if ($user->isSuperAdmin()) {
  42.             return true;
  43.         }
  44.         switch ($attribute) {
  45.             case self::READ:
  46.                 return true;
  47.                 break;
  48.         }
  49.         return false;
  50.     }
  51. }