Category Archives: Wordpress

WordPress-Plugin: Roundcube Login Form

Die Umstellung auf WordPress brachte für mich die Aufgabe mit sich, den Login in mein Webmail Interface sicher zu stellen. Für Webmail benutze ich seit langer Zeit Roundcube und bin damit sehr zufrieden. Das Loginformular hatte ich in meinem alten, selbtgeschriebenen CMS bereits realisiert. Mit einem einfachen Formular mit Ziel auf die Roundcube Seite funktioniert das Login nicht!
Der Grund liegt darin, dass Roundcube beim initialen Aufruf des Loginformulars einen randomisierten Token generiert und diesen Zusammen mit der IP, den Language und Skin-Definitionen in der Tabelle ’sessions› hinterlegt. Der Token wird dann im Login Formular in einem versteckten Input-Feld gespeichert und beim Login mit übermittelt. Nur wenn dieser mit dem in der Datenbank hinterlegten zusammen mit der IP Adresse des Benutzers übereinstimmen, wird der Login genehmigt. Auf diese Weise wird sichergestellt, dass der Login nur von der Roundcube Login Page kommt.
Das fand ich aber schon immer unbefriedigend, denn ich wollte, dass das ganze System etwas mehr wie aus einem Guß erscheint und man sich nicht durch unnötig viele Seiten klicken muss.
Nun habe ich aus meiner alten Routine ein WordPress Plugin erstellt, mit dem sich dies in für mich befriedigender Weise realisieren lässt.

Es funktioniert nur mit Roundcube-Installationen auf MySQL Basis ($config[’session_storage›]=’db›) und benötigt Lese- und Schreibzugriff auf die Tabelle ’sessions› der Roundcube Datenbank. Es reicht, einen MySQL Benutzer anzulegen, der lediglich auf diese Tabelle Zugriff hat. Die entsprechenden Zugriffsdaten lassen sich wie gewohnt über die Einstellungen des PlugIns hinterlegen.

Um das Formular zu nutzen, muss an beliebiger Stelle der Shortcode [roundcube_login_form] in den Text der Seite, des Beitrags oder des Widgets eingefügt werden. An seiner Stelle erscheint bei aktivierem Plugin automatisch das Loginformular. Es ist möglich dem Shortcode Parameter zu übergeben. Diese stellen CSS Klassen dar, womit es ermöglicht werden soll, das Formular an verschiedenen Stellen der Seite unterschiedlich zu formatieren. Beispiel: Mit [roundcube_login_form inpage] oder [roundcube_login_form sidebar] wird jeweils die CSS Klasse ‹inpage› bzw. ’sidebar› übergeben. Im styles.css des PlugIns (zu bearbeiten z.B. über den Plugin-Editor von WordPress) können dann entsprechende Formatierungen hinterlegt werden.

Wenn das Plugin bei mir gut funktioniert, ist es unwahscheinlich, dass ich daran weiter arbeite. Wenn jemand jedoch Probleme haben sollte, mag er sich melden. Ich kann aber nicht garantieren, dass ich dazu komme zu antworten!

Um das Ganze noch mehr wie aus einem Guß erscheinen zu lassen, habe ich ein kleines Roundcube-Plugin geschrieben, das beim Ausloggen oder beim fehlerhaften Login wieder auf die WordPress Seite führt. Dieses muss wie gewöhnlich ins roundcube/plugins Verzeichnis entpackt und ins $config[‹plugins›] Array in der config.inc.php aufgenommen werden. Es gibt ein kleines Config-File im Plugin-Verzeichnis, welches selbsterklärend sein sollte.

Das WordPress-Plugin lässt sich hier herunter laden: wp-roundcube-login-form.0.2.zip

Das Roundcube-Plugin gibt es hier: roundcube_logout_redirect.0.2.zip

Beide Plugins sind frei und ohne Forderungen meinerseits zu nutzen. Getestet habe ich sie erfolgreich mit Roundcube Version 1.1.1 und 1.3.9. Ich gebe aber keinerlei Garantie und trage keine Verantwortung für die Nutzung! Sollte jemand Anmerkungen oder Verbesserungen haben, freue ich mich über Feedback!