0
ユーザーに特定の役割がある場合にのみ、デフォルトのサービスを上書きする3つのサービスがあります。特定のユーザーロールのサービスをオーバーライドする
さらに良い。新しいサービスで現在のユーザー/セキュリティを注入します。 サービスは、ユーザーロールのチェックを実行し、元のサービスを呼び出します。
私はそれにsecurity.context
を注入しようとしました。しかし$security->getToken()
はnull
を返します。
コントローラでは正常に動作します。私のサービスで現在のユーザーを取得するにはどうすればよいですか?これは私がしたいことです:
class AlwaysVisibleNavigationQueryBuilder extends NavigationQueryBuilder
{
public function __construct(\Sulu\Component\Content\Compat\StructureManagerInterface $structureManager, $languageNamespace, SecurityContext $security)
{
if (in_array('ROLE_SULU_ADMINISTRATOR', $security->getToken()->getRoles())) {
// Show unpublished content, too
$this->published = false;
}
parent::__construct($structureManager, $languageNamespace);
}
}
コンストラクタにセキュリティコンテキストがまだ情報を持っていない場合は、メソッドを呼び出す必要があります – Matteo
ありがとう、あなたのヒントが私の問題を解決しました。 – psren