Passwortgeschütze Seiten (ign_password_protect)
Autor: Alex
Manchmal macht es Sinn Teile einer Webseite per Passwort zu schützen. Bei Textpattern kann man das mit dem Plugin ign_password_protect von Jeremy Amos erreichen.
Das Plugin läßt sich leicht unter TXP v. 4.0.3. installieren. Es legt unter ‘Erweiterungen’ eine Seite an auf der User, die Zugang zu den sensiblen Infos haben sollen, vom Admin registriert werden. Dem registrierten User wird automatisch ein verschlüsseltes Passwort per email zugesendet. Damit aber nicht genug. Man kann sogar die Rechte der User festlegen und damit einzelnen Usergruppen Zutritt zu spezifischen Sektionen oder Artikeln einräumen. Hört sich jetzt alles etwas verwirrend an, aber keine Sorge, das Meiste ergibt sich gleich.
Das Plugin besteht aus den folgenden Tags:
<txp:ign_password_protect></txp:ign_password_protect> <txp:ign_if_logged_in>...<txp:else />... </txp:ign_if_logged_in> <txp:ign_if_not_logged_in>...<txp:else />... </txp:ign_if_not_logged_in> <txp:ign_logged_user /> <txp:ign_show_login /> <txp:ign_usr_online /> <txp:ign_self_edit /> <txp:ign_page_privs />
(Achtung: die Tags können nicht ineinander verschachtelt werden.)
Alle Tags haben etliche Attribute, deren genau Beschreibung sich in der Hilfeanleitung des Plugins befinden.
Mit dem ersten Tag (<txp:ign_password_protect></txp:ign_password_protect>) können ganze Seiten oder auch nur selektive Artikel geschützt werden. Das Tag gibt ein Loginformular (Username + Passwort) aus. Will man z. B. eine ganze Sektion schützen, dann schließt man die Seitenvorlage, die zur Sektion gehört, komplett in die beiden Tags ein. Selbiges geht aber auch für einzelne Artikel. Da verwendet man die Tags einfach im Artikelbaustein. Das Tag gibt ein Loginformular aus. Die Verwendung des Tags finde ich allerdings nicht so elegant wie die folgende:
<txp:ign_show_login /> gibt ein Loginformular (Username, Passwort) aus. Auf unserer Impressum Seite habe ich es mal in der rechten Seitenleiste eingebaut.
Den Inhalt der Impressumseite habe mit dem folgenden Code geschützt:
<txp:ign_if_logged_in> <txp:article /> <txp:else /> Sie muessen eingelogged sein. </txp:ign_if_logged_in>
Der Code ist direkt in der Seitenvorlage platziert. Diese Methode ist eleganter, da User vorab freundlich informiert werden, sich bitte einzuloggen.
<txp:ign_if_logged_in>...</txp:ign_if_logged_in> ist ein conditionaler Tag. Man kann ihn auch z. B. dazu verwenden Infos auszugeben wenn der User sich eingelogged hat. Man könnte z. B. den folgenden Code in der Seitenleiste der Webseite platzieren:
<txp:ign_if_logged_in> <txp:ign_self_edit /> <txp:ign_logged_user /> </txp:ign_if_logged_in>
<txp:ign_self_edit /> gibt ein Formular aus mittels dem der User sein Passwort selbsttätig ändern kann. Das ist ungemein praktisch, da bei der ersten Registrierung durch den Admin User ein ziemlich kryptisches Passwort erhalten, dass kein Mensch behalten kann.
<txp:ign_logged_user /> gibt eine Liste der Namen der zur zeit eingeloggten User aus.
Rechtevergabe
Jeremy hat sich ziemlich viele clevere Gedanken um das Plugin gemacht. Ein weiteres Highlight ist die sehr spezifische Rechtevergabe. Registriert man als Admin einen neuen User, muß man ihm eine Rechtegruppe (1-6) zuweisen. Im Englischen nennt man ein Zugangsrecht ‘privilege’. Nun könnte man spezifischen Content nur für die Rechtegruppe 5 zugänglich machen indem man das Attribut privs verwendet:
<txp:ign_password_protect privs='5'> <txp:article /> </txp:ign_password_protect>
Somit können nur User mit dem Zugangsrecht 5 den Artikel lesen. Gleiches kann man auch für ganze Sektionen einstellen.
Um die Sache weiter auf die Spitze zu treiben hat, Jeremy sich noch den Tag <txp:ign_page_privs privs=x,y, z /> ausgedacht. Diesen platziert man auf der Seitenvorlage und kann die vorgegebenen Rechte gänzlich überschreiben.
Jeremy schreibt dazu:
By default, if no privs parameter is set for the password protect tags, any valid user will have access once logged in. This can be controlled by setting the privs parameter, and this tag allows you to set that value for all protected elements on a page. Suppose you have 5 instances of<txp:ign_if_logged_in>on a page that all need to be restricted to privilege level 1, rather than specifying privs=’1’ for each occurrence, you can set<txp:ign_page_privs privs='1' />at the top of the page, and all the following tags will inherit that privilege level.To complicate things further, if you have 5 occurrences of the tag, of which 4 need to be level 1, and one needs to be level 2, you can still set the page_privs, to 1, then just add the privs parameter to the one occurrence that needs different privilege levels.
Um alles ein weniger anschaulich zu machen, könnt ihr euch zu Testzwecken (nur diese Woche) gerne mal auf unserer Imressum Seite einloggen. Username als auch Passwort ist: gast. Bitte setzt das Passwort nicht zurück! Das neue Passwort würde eh nur ich erhalten und zudem macht mir das überflüssige Arbeit.
Achtung
Das Plugin verhindert nicht, dass Content über RSS Feeds geladen wird. Selbiges gilt für Dateidownloads.
Links
Mehr zum ign_password_protect Plugin in Textpatterns Plugin Repository auf textpattern.org und im Forum
Infos zum Schützen einer Webseit per .htaccess und .htpassw findet man in diesem Forumthread:
http://forum.textpattern.com/viewtopic.php?id=17707
Weitere neue Artikel
Neue TXP Sites
- Unable to connect to del.icio.us