src/Security/Voter/PaymentVoter.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\Payment;
  4. use App\Entity\User;
  5. use App\Enum\PermissionEnum;
  6. use App\Service\UserPermissionLookup;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Authorization\Voter\Voter;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. class PaymentVoter extends Voter
  11. {
  12.     /**
  13.      * @var UserPermissionLookup
  14.      */
  15.     private $userPermissionLookup;
  16.     public function __construct(UserPermissionLookup $userPermissionLookup)
  17.     {
  18.         $this->userPermissionLookup $userPermissionLookup;
  19.     }
  20.     protected function supports($attribute$subject)
  21.     {
  22.         $arrayPermissions = [
  23.             PermissionEnum::PAYMENT_VIEW,
  24.             PermissionEnum::PAYMENT_EDIT,
  25.             PermissionEnum::PAYMENT_CREATE,
  26.             PermissionEnum::PAYMENT_DELETE,
  27.             PermissionEnum::PAYMENT_CANCEL,
  28.             PermissionEnum::PAYMENT_EXPORT_EXCEL_DETAIL,
  29.             PermissionEnum::PAYMENT_EXPORT_EXCEL_BALANCE,
  30.         ];
  31.         if (!\in_array($attribute$arrayPermissionstrue)) {
  32.             return false;
  33.         }
  34.         if (!$subject instanceof Payment) {
  35.             return false;
  36.         }
  37.         return true;
  38.     }
  39.     protected function voteOnAttribute($attribute$subjectTokenInterface $token)
  40.     {
  41.         /** @var User $user */
  42.         $user $token->getUser();
  43.         if (!$user instanceof UserInterface) {
  44.             return false;
  45.         }
  46.         switch ($attribute) {
  47.             case PermissionEnum::PAYMENT_EDIT:
  48.                 return $this->canEdit($user);
  49.             case  PermissionEnum::PAYMENT_CREATE:
  50.                 return $this->canCreate($user);
  51.             case  PermissionEnum::PAYMENT_DELETE:
  52.                 return $this->canDelete($user);
  53.             case  PermissionEnum::PAYMENT_VIEW:
  54.                 return $this->canView($user);
  55.             case  PermissionEnum::PAYMENT_EXPORT_EXCEL_DETAIL:
  56.                 return $this->canExportExcelDetail($user);
  57.             case  PermissionEnum::PAYMENT_EXPORT_EXCEL_BALANCE:
  58.                 return $this->canExportExcelBalance($user);
  59.             case  PermissionEnum::PAYMENT_CANCEL:
  60.                 return $this->canCancel($user);
  61.         }
  62.         return false;
  63.     }
  64.     private function canView(User $user)
  65.     {
  66.         $permissions $this->userPermissionLookup->findAllByUser($user);
  67.         if (\in_array(PermissionEnum::PAYMENT_VIEW$permissionstrue)) {
  68.             return true;
  69.         }
  70.         return false;
  71.     }
  72.     private function canEdit(User $user)
  73.     {
  74.         $permissions $this->userPermissionLookup->findAllByUser($user);
  75.         if (\in_array(PermissionEnum::PAYMENT_EDIT$permissionstrue)) {
  76.             return true;
  77.         }
  78.         return false;
  79.     }
  80.     private function canCreate(User $user)
  81.     {
  82.         $permissions $this->userPermissionLookup->findAllByUser($user);
  83.         if (\in_array(PermissionEnum::PAYMENT_CREATE$permissionstrue)) {
  84.             return true;
  85.         }
  86.         return false;
  87.     }
  88.     private function canDelete(User $user)
  89.     {
  90.         $permissions $this->userPermissionLookup->findAllByUser($user);
  91.         if (\in_array(PermissionEnum::PAYMENT_DELETE$permissionstrue)) {
  92.             return true;
  93.         }
  94.         return false;
  95.     }
  96.     private function canCancel(User $user)
  97.     {
  98.         $permissions $this->userPermissionLookup->findAllByUser($user);
  99.         if (\in_array(PermissionEnum::PAYMENT_CANCEL$permissionstrue)) {
  100.             return true;
  101.         }
  102.         return false;
  103.     }
  104.     private function canExportExcelBalance(User $user)
  105.     {
  106.         $permissions $this->userPermissionLookup->findAllByUser($user);
  107.         if (\in_array(PermissionEnum::PAYMENT_EXPORT_EXCEL_BALANCE$permissionstrue)) {
  108.             return true;
  109.         }
  110.         return false;
  111.     }
  112.     private function canExportExcelDetail(User $user)
  113.     {
  114.         $permissions $this->userPermissionLookup->findAllByUser($user);
  115.         if (\in_array(PermissionEnum::PAYMENT_EXPORT_EXCEL_DETAIL$permissionstrue)) {
  116.             return true;
  117.         }
  118.         return false;
  119.     }
  120. }