src/Security/Voter/ShopVoter.php line 11

  1. <?php
  2. namespace App\Security\Voter;
  3. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  4. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  5. use Symfony\Component\Security\Core\User\UserInterface;
  6. use App\Entity\Shop;
  7. use App\Entity\User;
  8. class ShopVoter extends Voter
  9. {
  10.     public const EDIT 'POST_EDIT';
  11.     public const VIEW 'POST_VIEW';
  12.     protected function supports(string $attributemixed $subject): bool
  13.     {
  14.         return in_array($attribute, [self::EDITself::VIEW'ADMIN_USER_EDIT'])
  15.             && $subject instanceof Shop;
  16.     }
  17.     protected function voteOnAttribute(string $attributemixed $subjectTokenInterface $token): bool
  18.     {
  19.         $user $token->getUser();
  20.         if (!$user instanceof UserInterface) {
  21.             return false;
  22.         }
  23.         //dump($token);
  24.         //dump($user);
  25.         //dump($subject);
  26.     if ($subject->getUsers()->getId() === $user->getId()) {
  27.         return true// Allow access for ADMIN_USER_EDIT
  28.     }
  29.     
  30.         // ... (check conditions and return true to grant permission) ...
  31.         switch ($attribute) {
  32.             case self::EDIT:
  33.                 // logic to determine if the user can EDIT
  34.                 // return true or false
  35.                 break;
  36.             case self::VIEW:
  37.                 // logic to determine if the user can VIEW
  38.                 // return true or false
  39.                 break;
  40.         }
  41.         return false;
  42.     }
  43. }
  44.  /*   
  45. namespace App\Security\Voter;
  46. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  47. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  48. use Symfony\Component\Security\Core\User\UserInterface;
  49. use App\Entity\Shop;
  50. use App\Entity\User;
  51. class ShopVoter extends Voter
  52. {
  53.     // début de mon voter personnalisé pour ne faire apparaître que les
  54.     // commerces attribués à un commerçant
  55.     
  56.     // fin de mon voter personnalisé
  57.     
  58.     public const EDIT = 'POST_EDIT';
  59.     public const VIEW = 'POST_VIEW';
  60.     protected function supports(string $attribute, mixed $subject): bool
  61.     {
  62.         // replace with your own logic
  63.         // https://symfony.com/doc/current/security/voters.html
  64.         return in_array($attribute, [self::EDIT, self::VIEW])
  65.             && $subject instanceof \App\Entity\Shop;
  66.     }
  67.     protected function voteOnAttribute(string $attribute, mixed $subject, TokenInterface $token): bool
  68.     {
  69.         $user = $token->getUser();
  70.         // if the user is anonymous, do not grant access
  71.         if (!$user instanceof UserInterface) {
  72.             return false;
  73.         }
  74.         // ... (check conditions and return true to grant permission) ...
  75.         switch ($attribute) {
  76.             case self::EDIT:
  77.                 // logic to determine if the user can EDIT
  78.                 // return true or false
  79.                 break;
  80.             case self::VIEW:
  81.                 // logic to determine if the user can VIEW
  82.                 // return true or false
  83.                 break;
  84.         }
  85.         return false;
  86.     }
  87. }
  88. */