<?php
declare(strict_types=1);
namespace Bdm\BackofficeBundle\Security\Authorization\Voter;
use Bdm\BackofficeBundle\Entity\Merchant;
use Bdm\CheckoutBundle\Entity\Seller;
use Bdm\OAuth2Bundle\Entity\User;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
class SellerVoter extends AbstractVoter
{
/**
* @param string $sAttribute attribute
* @param mixed $oSubject subject
* @return bool
*/
#[\Override]
public function supports($sAttribute, $oSubject)
{
return $oSubject instanceof Seller && parent::supports($sAttribute, $oSubject);
}
/**
* @param string $sAttr attr
* @param mixed $mEntity entity
* @param TokenInterface $oToken token
*
* @return bool
*/
protected function voteOnAttribute($sAttr, $mEntity, TokenInterface $oToken)
{
$oUser = $oToken->getUser();
if (!$oUser) {
$oUser = $this->oMerchantProvider->getUser();
}
if (!$oUser instanceof Merchant) {
return false;
}
if ($oUser->getId() == $mEntity->getApplication()->getMerchant()->getId()) {
return true;
}
return false;
}
}