Sonata & Symfony 4.3: создание собственного избирателя или пользовательской карты разрешений - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь создать пользовательского избирателя, например https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/security.html#create-a-custom-voter-or-a-custom-permission-map, но у меня есть эта ошибка

enter image description here

моя декларация службы похожа

    security.acl.voter.form_permission:
    class: App\Security\FormAclVoter
    arguments:
        - "@security.acl.provider"
        - "@security.acl.object_identity_retrieval_strategy"
        - "@security.acl.security_identity_retrieval_strategy"
        - "@security.acl.permission.map"
        - "@logger"
    tags:
        - { name: monolog.logger, channel: security }
        - { name: security.voter, priority: 255 }
    public: false

и мой избиратель:

namespace App\Security;

use App\Entity\Form;
use App\Entity\User;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Acl\Voter\AclVoter;

class FormAclVoter extends AclVoter
{
const EDIT = 'edit';

protected function supports($attribute, $subject)
{

    if (!in_array($attribute, [self::EDIT])) {
        return false;
    }


    if (!$subject instanceof Form) {
        return false;
    }

    return true;
}

protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{
    $user = $token->getUser();

    if (!$user instanceof User) {

        return false;
    }


    $form = $subject;

    switch ($attribute) {
        case self::EDIT:
            return $this->canEdit($form);
    }

    throw new \LogicException('This code should not be reached!');
}



private function canEdit(Form $form)
{

    return is_null($form->getNbUsed());

}

} Я не знал, почему у меня есть эта ошибка, у меня есть все необходимые аргументы в моей декларации обслуживания thx

...