src/Core/Security/Voter/SuperAdminSecondAuthenticationVoter.php line 10

Open in your IDE?
  1. <?php
  2. namespace Harmonizely\Core\Security\Voter;
  3. use Harmonizely\Core\Security\Contract\ISuperAdminSecurityHelper;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  6. use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
  7. class SuperAdminSecondAuthenticationVoter implements VoterInterface
  8. {
  9.     /**
  10.      * @var ISuperAdminSecurityHelper
  11.      */
  12.     private ISuperAdminSecurityHelper $security;
  13.     /**
  14.      * SecondAuthenticationVoter constructor.
  15.      * @param ISuperAdminSecurityHelper $security
  16.      */
  17.     public function __construct(ISuperAdminSecurityHelper $security)
  18.     {
  19.         $this->security $security;
  20.     }
  21.     /**
  22.      * Returns the vote for the given parameters.
  23.      *
  24.      * This method must return one of the following constants:
  25.      * ACCESS_GRANTED, ACCESS_DENIED, or ACCESS_ABSTAIN.
  26.      *
  27.      * @param TokenInterface $token
  28.      * @param mixed $subject The subject to secure
  29.      * @param array $attributes An array of attributes associated with the method being invoked
  30.      *
  31.      * @return int either ACCESS_GRANTED, ACCESS_ABSTAIN, or ACCESS_DENIED
  32.      */
  33.     public function vote(TokenInterface $token$subject, array $attributes): int
  34.     {
  35.         if ($subject instanceof Request) {
  36.             if (in_array(ISuperAdminSecurityHelper::IS_SUPER_ADMIN_2FA_REQUIRED$attributes) && !$this->security->isSecondFactorPassed()) {
  37.                 return self::ACCESS_DENIED;
  38.             }
  39.         }
  40.         return self::ACCESS_ABSTAIN;
  41.     }
  42. }