- <?php
- namespace EasyCorp\Bundle\EasyAdminBundle\Security;
- use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
- use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
- /**
-  * A slightly modified authorization checker optimized for performance and which
-  * doesn't trigger exceptions when security is not enabled.
-  *
-  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
-  */
- class AuthorizationChecker implements AuthorizationCheckerInterface
- {
-     private $authorizationChecker;
-     public function __construct(AuthorizationCheckerInterface $authorizationChecker)
-     {
-         $this->authorizationChecker = $authorizationChecker;
-     }
-     public function isGranted($permission, $subject = null): bool
-     {
-         // this check is needed for performance reasons because most of the times permissions
-         // won't be set, so this function must return as early as possible in those cases
-         if (empty($permission)) {
-             return true;
-         }
-         try {
-             return $this->authorizationChecker->isGranted($permission, $subject);
-         } catch (AuthenticationCredentialsNotFoundException $e) {
-             // this exception happens when there's no security configured in the application
-             // that's a valid scenario for EasyAdmin, where security is not required (although very common)
-             return true;
-         }
-     }
- }
-