src/Security/Voter/JournalArticleFileVoter.php line 11

  1. <?php
  2. namespace App\Security\Voter;
  3. use Symfony\Component\Security\Core\Authorization\Voter\Voter,
  4.     Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  5. use App\Enum\JournalArticleFileType,
  6.     App\Entity\JournalArticleFile,
  7.     App\Lib\Actions;
  8. final class JournalArticleFileVoter extends Voter
  9. {
  10.     const CREATE_MESSAGE 'Predefined file cannot be created.';
  11.     const DELETE_MESSAGE 'Predefined file cannot be deleted.';
  12.     protected function supports($attribute$subject): bool
  13.     {
  14.         if (
  15.             ! $subject instanceof JournalArticleFile ||
  16.             ! in_array($attribute, [Actions::CREATEActions::DELETE])
  17.         ) {
  18.             return false;
  19.         }
  20.         return true;
  21.     }
  22.     protected function voteOnAttribute($attribute$subjectTokenInterface $token): bool
  23.     {
  24.         return $subject->getType() === JournalArticleFileType::CUSTOM;
  25.     }
  26. }