<?php
namespace App\Voter;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
use Symfony\Component\Security\Core\User\UserInterface;
class AccountingVoter extends Voter
{
const SUPPLIER_COMPANY_PAYMENT_LIST = "ACCOUNTING_SUPPLIER_COMPANY_PAYMENT_LIST";
const SUPPLIER_COMPANY_PAYMENT_DETAIL = "ACCOUNTING_SUPPLIER_COMPANY_PAYMENT_DETAIL";
const SUPPLIER_COMPANY_PAYMENT_CREATE = "ACCOUNTING_SUPPLIER_COMPANY_PAYMENT_CREATE";
const SUPPLIER_COMPANY_PAYMENT_UPDATE = "ACCOUNTING_SUPPLIER_COMPANY_PAYMENT_UPDATE";
const SUPPLIER_ASSUREVER_PAYMENT_LIST = "ACCOUNTING_SUPPLIER_ASSUREVER_PAYMENT_LIST";
const SUPPLIER_ASSUREVER_PAYMENT_UPDATE = "ACCOUNTING_SUPPLIER_ASSUREVER_PAYMENT_UPDATE";
const SELLER_BONUS_LIST = "ACCOUNTING_SELLER_BONUS_LIST";
const SHOW_ALL_SELLERS = "ACCOUNTING_SHOW_ALL_SELLERS";
protected function supports($attribute, $subject): bool
{
return in_array($attribute, [
self::SUPPLIER_COMPANY_PAYMENT_LIST,
self::SUPPLIER_COMPANY_PAYMENT_DETAIL,
self::SUPPLIER_COMPANY_PAYMENT_CREATE,
self::SUPPLIER_COMPANY_PAYMENT_UPDATE,
self::SUPPLIER_ASSUREVER_PAYMENT_LIST,
self::SUPPLIER_ASSUREVER_PAYMENT_UPDATE,
self::SELLER_BONUS_LIST,
self::SHOW_ALL_SELLERS,
]);
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool
{
$loggedUser = $token->getUser();
if (!$loggedUser instanceof UserInterface) {
return false;
}
return in_array($attribute, $loggedUser->getRoles());
}
}