ユーザーで is_granted を呼び出す必要がある投票者を作成しました。
投票者に security.authorization_checker サービスを注入すると、次のエラーが発生します
CheckCircularReferencesPass.php 行 69 の ServiceCircularReferenceException: サービス「manager_voter」の循環参照が検出されました。パス:「manager_voter -> security.authorization_checker -> security.access.decision_manager -> manager_voter」。
コンテナ全体を注入する以外に方法はありませんか? これは正常ですか?
編集:
コントローラーから有権者を呼び出しています:
if (false === $this->get('security.authorization_checker')->isGranted('manage', $associate)) {
throw new AccessDeniedException('Unauthorised access!');
}
この投票者では、ユーザーの役割を確認する必要があります。
if ($this->container->get('security.authorization_checker')->isGranted('ROLE_COMPANY_MANAGER'))
{
return true;
}
もちろん、これはループにつながります。そのループを取得しない方法は? ユーザーに対して $user->getRoles を呼び出しても、私の間違いでなければ、ロール階層は考慮されません。