Ich verwende das Ansichtsmodul, um eine Ansicht zu erstellen, auf die nur bestimmte Benutzer zugreifen können sollten. Ich weiß, dass Ansichten die Zugriffssteuerung nach Rolle oder Berechtigungen beinhalten, aber ich brauche etwas Feineres: Grundsätzlich möchte ich sagen können, dass nur Benutzer "x" und Benutzer "y" auf eine bestimmte Ansicht zugreifen können (oder jemand mit eine Site-Administrator-Rolle). Dies würde also sehr ähnlich funktionieren wie das ACL-Modul für einzelne Knoten.
Ist der beste Ansatz zum Erstellen eines Plugins für den Zugriff auf benutzerdefinierte Ansichten? Ich habe nicht viel Erfahrung damit.
Außerdem frage ich mich, ob ich ein Argument mit einer Validierung verwenden soll, um dies zu erreichen (damit ich nicht Dutzende separater Ansichten erstellen muss). Da diese Ansicht beispielsweise eine Registerkarte in einem bestimmten Knotenpfad ist, frage ich mich, ob ich auf diesem Knoten ein Benutzerreferenzfeld einrichten soll, das angibt, wer die Ansicht sehen kann. Ich brauche nur eine Möglichkeit, damit die Ansicht nur überprüft, ob der aktuelle Benutzer einem im Benutzerreferenzfeld angegebenen Benutzer entspricht.
Irgendwelche Ideen? Oder mache ich das komplizierter als es sein muss?
Danke, Ben
Antworten:
Anstatt die Berechtigungen für die Ansicht einzuschränken, können Sie die Berechtigungen für das Menüelement einschränken, das zu dieser Ansicht führt (sei es eine Registerkarte auf einem Knoten oder ein Menürückruf). Sie können Ihre Ansicht nur mit einer "Standard" -Anzeige und ohne Seitenanzeige erstellen (Benutzer können also nicht einfach den Pfad dazu herausfinden).
page callback
Rufen Sie dann in Ihrem Menüpunkt einfachviews_embed_view
an, um die Ansicht anzuzeigen. Es scheint, als wäre die Handhabung von Berechtigungen für einen Menüpunkt einfacher als das Schreiben eines neuen Plug-Ins für Ansichten (obwohl ein Plug-In für andere hilfreich sein könnte).quelle
Probieren Sie das Views Access Callback- Modul aus.
quelle
Ich muss etwas vermissen, aber es klingt so, als würden Sie eine neue Rolle erstellen und diese Benutzer hinzufügen. Verwenden Sie dann die Funktion Zugriff: Rolle der Ansichten.
Wenn Sie die Zugriffsrechte an einen bestimmten Inhalt binden müssen, würde ich einen benutzerdefinierten Ansichtszugriff verwenden, bei dem ich beim ersten Einrichten Probleme hatte, aber die Flexibilität zu schätzen wissen, wenn ich einmal gearbeitet habe. Wenn die Ansicht das Menüelement generiert, wird es nicht angezeigt, wenn die Ansicht die Zugriffsfunktion nicht besteht.
Wenn Sie nur einen Menüpunkt ausblenden, scheint es mir, dass die Ansicht weiterhin ausgeführt wird und ein Benutzer einen URI optimieren kann, um die Daten anzuzeigen.
Jerry
quelle
Wie wäre es, wenn Sie das Modul " Benutzerdefinierte Berechtigungen" verwenden , um einige neue Berechtigungen speziell für Ihren Zweck zu erstellen, und dann das Modul " Benutzerberechtigungen" verwenden , um diese neuen Berechtigungen einzelnen Benutzern zuzuweisen?
Das Modul für benutzerdefinierte Berechtigungen ist sehr leicht. Ich bin mir jedoch nicht so sicher, was das Benutzerberechtigungsmodul angeht, da es im Wesentlichen für jeden Benutzer hinter den Kulissen eine neue Rolle erstellt (diese Rollen sind auf der Hauptberechtigungsseite nicht sichtbar). Wenn Sie viele Benutzer haben, kann dies die Größe Ihrer Rollen und user_roles-Tabellen etwas erhöhen.
quelle
Richtig, das macht mehr Sinn. Ich denke, Sie könnten (möglicherweise nicht 100% sicher) eine Ansicht und ein Argument verwenden. Legen Sie das Argument als Benutzer-ID fest, die dem aktuell angemeldeten Benutzer entnommen wurde, und lassen Sie das Standardargument nichts anzeigen. Das sollte es können, obwohl ich nicht weiß, wie sicher es wäre, fair zu sein. Wenn Sie es versuchen, schreiben Sie zurück und teilen Sie mir Ihre Fortschritte mit.
quelle
Wenn Sie verschiedene Zugriffs-Plugins in Views kombinieren möchten, sollten Sie sich das Modul Views access many ansehen .
quelle