Benutzerrechte für Plugins ohne ACL-Unterstützung

Einleitung

Mitunter kann es vorkommen, dass ein im Store erworbenes Plugin die Benutzerverwaltung von Shopware nicht unterstützt und keine ACL-Ressource bereitstellt. In bestimmten Fällen kann es dennoch gewünscht sein, dass nicht alle Benutzer Zugriff auf den jeweiligen Menüpunkt haben. In diesem Tutorial erklären wir, wie Du über eine kleine manuelle Konfiguration im Backend den Menüpunkt für einzelne Benutzer ausblenden kannst.

Auslesen des Controllers

Zunächst benötigst Du den Aufruf, der im Backend stattfindet, wenn der Menüpunkt von einem Benutzer angeklickt wird. Diesen kannst Du am Besten mit Firebug (Firefox Add-On) oder dem Chrome-Debugger (F12) auslesen. In unserem Beispiel nehmen wir die Anpassung für das Plugin "Business Essentials" vor. Bei Business Essentials handelt es sich um den GET-Parameter /backend/BusinessEssentials?...

Firebug

Im Firebug kannst Du die URL entweder im Reiter Konsole oder auch im Reiter Netzwerk ausgelesen werden. Am besten leerst Du die Ansicht einmal komplett, bevor Du auf den gewünschten Menüpunkt klickst. Direkt der erste GET-Parameter sollte hier die konkrete URL für den Menüpunkt sein.

Chrome-Debugger

Im Chrome-Debugger verhält es sich ähnlich. Auch hier kann die Information über den Reiter Netzwerk ausgelesen werden.

Anlegen der Benutzerrechte

Anhand der URL kannst Du nun den genauen Controller-Namen bestimmen. Im Fall von Business Essentials ist das BusinessEssentials. Die Parameter, die im GET-Aufruf nach "?" kommen, kannst Du ignorieren. Der Aufruf kann aber bei den verschiedenen Plugins auch stark vom Plugin-Namen abweichen. Mit diesem Wissen kannst Du nun über "Einstellungen > Benutzerverwaltung" eine neue Regel & Berechtigung anlegen. Wechsel dazu zunächst in den Menüpunkt "Regeln & Berechtigungen" und wähle dort eine Rolle aus. Im Anschluss kannst Du über "Ressource hinzufügen" eine neue Berechtigung für Business Essentials anlegen.

Bei der Namensgebung ist es wichtig, dass der Name der Ressource exakt dem lower-case (alle Buchstaben klein) des Controller-Aufrufs entspricht. In unserem Beispiel ist dies also businessessentials. Lege also nun eine Ressource mit dem namen businessessentials an und füge im Anschluss das Privileg read (1) hinzu. Alle Rollen, die nun den Menüpunkt sehen sollen, müssen auch das Privileg read zugewiesen bekommen. Für die Rollen, die den Menüpunkt nicht sehen sollen, muss die gesamte Ressource businessessentials deaktiviert werden. Alle weiteren Funktionen der Benutzerverwaltung müssen individuell im Plugin umgesetzt werden und sind ohne Programmieraufwand im Plugin nicht umsetzbar.

Ausblenden des Hauptmenüs

Es ist ebenfalls Möglich die Hauptmenü-Einträge auszublenden. Hierzu musst du den Controller-Namen aus der s_core_menu für den Menü-Eintrag auslesen und in lower-case als Resource wie oben beschrieben anlegen.

War dieser Artikel hilfreich?