src/Security/Voter/FolderVoter.php line 8

Open in your IDE?
  1. <?php
  2. namespace App\Security\Voter;
  3. use App\Entity\Folder;
  4. use Symfony\Component\Security\Core\User\UserInterface;
  5. class FolderVoter extends AbstractDeepVoter
  6. {
  7.     public static $listAttribute 'list_folders';
  8.     public static $createAttribute 'create_folder';
  9.     private $currentFolder;
  10.     protected function listAttribute(): string
  11.     {
  12.         return self::$listAttribute;
  13.     }
  14.     protected function createAttribute(): string
  15.     {
  16.         return self::$createAttribute;
  17.     }
  18.     protected function isSupportedSubject(object $subject): bool
  19.     {
  20.         if ($isFolder $subject instanceof Folder) {
  21.             $this->currentFolder $subject;
  22.         }
  23.         return $isFolder;
  24.     }
  25.     protected function canList(UserInterface $user): bool
  26.     {
  27.         return $user->isAnAdmin();
  28.     }
  29.     protected function canCreate(UserInterface $user): bool
  30.     {
  31.         return $user->isAnAdmin();
  32.     }
  33.     protected function canRead(UserInterface $user): bool
  34.     {
  35.         return $user->isAnAdmin()
  36.             || $user->canAccessFolder($this->currentFolder)
  37.         ;
  38.     }
  39.     protected function canUpdate(UserInterface $user): bool
  40.     {
  41.         return $user->isAnAdmin();
  42.     }
  43.     protected function canDelete(UserInterface $user): bool
  44.     {
  45.         return $user->isMainAdmin();
  46.     }
  47. }