Ich habe 3 Dienste, die die Standarddienste nur überschreiben sollten, wenn der Benutzer eine bestimmte Rolle hat.Dienst für bestimmte Benutzerrolle außer Kraft setzen
Oder noch besser. Inject den aktuellen Benutzer/Sicherheit in den neuen Diensten. Der Dienst führt dann die Prüfung für die Benutzerrolle durch und ruft den ursprünglichen Dienst auf.
Ich habe versucht, security.context
hinein zu injizieren. Aber dann $security->getToken()
gibt null
zurück.
In den Controllern funktioniert es gut. Wie kann ich den aktuellen Benutzer in meinen Service aufnehmen? Folgendes möchte ich tun:
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);
}
}
im Konstruktor der Sicherheitskontext noch nicht die Info haben, müssen Sie die Methode aufrufen – Matteo
Danke, hat Ihr Hinweis mein Problem gelöst. – psren