У меня есть Voter, который отлично работает в контроллере, но когда я пытаюсь использовать его внутри службы, он всегда возвращает true, хотя у него есть оператор «return false».
Единственная разница, которую я вижу, это то, как я это называю.
В контроллере я использую это так:
$this->denyAccessUnlessGranted('ver', $menu);
И в сервисе я называю это так:
$this->authorizationChecker->isGranted('ver', $menu);
В службе я ввожу AuthorizationChecker, и он работает, но, похоже, запускает других избирателей (у меня только один).
В «security.yml» у меня есть это:
access_decision_manager:
strategy: unanimous
Код избирателя:
protected function voteOnAttribute($attribute, $subject, TokenInterface $token){
$usuario = $token->getUser();
if (!$usuario instanceof Usuarios) {
return false;
}
/** @var Menu $menu */
$menu = $subject;
switch ($attribute) {
case self::VER:
return false;
case self::EDITAR:
return false;
case self::IMPRIMIR:
return false;
}
throw new \LogicException('This code should not be reached!');
}
Кто-нибудь может мне помочь?