Tutorial – Rechte erstellen

Die Rechteverwaltung von eZ Publish ist das Kernstück für die Anzeigeverwaltung der Webseite und des Backends. Hier werden die Rechte der einzelnen Benutzer und Redakteure definiert.

eZ Publish bietet schon in der Basis-Installation viele Funktionen und Methoden an, die fast 99% des Grundbedarfs decken. Doch oft benötigt man eigene Rechte und wie man diese definiert erkläre ich in diesem kurzem Tutorial.

Die benötigte Rechte-Brücke geht über ein Modul. Den Hintergrund, warum dies so gelöst wurde, habe ich bis jetzt noch nicht verstanden. Naja, vielleicht ändert sich das in einer der nächsten eZ Publish Versionen.

 

Vorbereitung

Unser Beispiel erstellt das Recht „my_own_right“ mit der Funktion „read“.

Wie schon erwähnt, müssen wir unser Recht über das Modul erstellen bzw. definieren. Dazu erstellen wir uns einen Ordner in unserer Erweiterung.

/modules/my_own_right/

Darin legen wir zwei Dateien an.

  • module.php
  • read.php

innerhalb der module.php benötigen wir folgenden Code

<?php

$Module = array( 'name' => 'my_own_right',
                 'variable_params' => true );

$ViewList = array();
$ViewList['read'] = array(
        'script' => 'read.php',
        'functions' => array("read"),
        'params' => array (  )
        );

$FunctionList = array();

$FunctionList["read"] = array( );

?>

In der read.php benötigen wir keinen Code. Die Datei dient als so genannter Platzhalter. Ich persönlich füge immer ein Kommentar ein der beschreibt, wofür die Datei benötigt wird.

<?php 

// Dummy for my own right - my_own_right/read

?>

Und unter settings benötigen wir die klassische module.ini

[ModuleSettings]
ExtensionRepositories[]=YOUR_EXTENSION_NAME
ModuleList[]=my_own_right

So, nun einmal Autoloads neu generieren und den Cache leeren. (Ob der Cache wirklich geleert werden muss, darüber bin ich mir nicht sicher. Am besten trotzdem machen,  denn sicher ist sicher) 🙂

Rechteabfrage

Im Template können wir über folgenden Fetch unser neu erstelltes Recht abfragen:

{def $user_translator = fetch( 'user', 'has_access_to',
				    hash( 
					'module',   'my_own_right',
					'function', 'read' ) 
				)
}
{if eq($user_translator,1)}
    Yes Sir!
{else}
    No Sir!
{/if}

In der Rechteverwaltung unter Rollen und Rechte findet man nun das Modul my_own_right und kann dort auch das Recht „read“ auswählen.

Fazit

Im Grunde ist es doch recht einfach, wenn auch etwas aufwendig. Schade, dass es dafür in eZ Publish keine InI gibt, in der man diese Einstellungen vornehmen kann. Extra dafür ein Modul erstellen, ist doch etwas übertrieben, würde ich meinen. Mir scheint es fast so, als ob es sich hier um eine Notlösung handelt.

Im Grunde würde ich mir so eine Einstellung wünschen:

[rights]
right[]=my_own_rule

[my_own_rule]
functions[]=read

 

 

David Hohl

Seit 1995 Entwickler und Projektleiter. Langjährige Erfahrung mit eZ Publish. War von 2012 bis 2014 bei silver.solutions als Entwickler, Konzeptionen und Projektleiter für eZ Publish Projekte verantwortlich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.