src/Security/Voter/UserManagmentVoter.php line 17

Open in your IDE?
  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\User\User;
  7. use App\Entity\User\Veto;
  8. use App\Entity\User\AdminPays;
  9. use App\Entity\User\DirectElevage;
  10. use App\Entity\User\DirectRegional;
  11. use App\Entity\User\DirectPrefectoral;
  12. use App\Entity\User\DirectAbattoire;
  13. use App\Security\Rights\UserRights;
  14. class UserManagmentVoter extends Voter
  15. {
  16.     protected function supports($attribute$subject)
  17.     {
  18.         // replace with your own logic
  19.         // https://symfony.com/doc/current/security/voters.html
  20.         return in_array($attribute, [
  21.             UserRights::SHOW_COLLABORATEUR,
  22.             //UserRights::ADD_INSTITUTION,
  23.             UserRights::ADD_COLLABORATEUR
  24.         ]);
  25.     }
  26.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  27.     {
  28.         $user $token->getUser();
  29.         // if the user is anonymous, do not grant access
  30.         if (!$user instanceof UserInterface) {
  31.             return false;
  32.         }
  33.         switch ($attribute) {
  34.             case UserRights::SHOW_COLLABORATEUR:
  35.                 return $this->canViewCollaborateur($user);
  36.             case UserRights::ADD_COLLABORATEUR:
  37.                 return $this->canCreateCollaborateur($user);
  38.         }
  39.         return false;
  40.     }
  41.     private function canCreateCollaborateur(User $user)
  42.     {
  43.         if (($user instanceof AdminPays) or ( $user instanceof DirectAbattoire)) {
  44.             return true;
  45.         }
  46.         return false;
  47.     }
  48.     private function canViewCollaborateur(User $user)
  49.     {
  50.         if (($user instanceof AdminPays) or ( $user instanceof DirectAbattoire)) {
  51.             return true;
  52.         }
  53.         return false;
  54.     }
  55. }