Archiv für März, 2008

WordPress Plugin Version 1.5.1

19. März 2008

Soeben habe ich die Version 1.5.1 meines WordPress-Plugin in das Plugin-Verzeichnis von wordpress.org geladen. Der Sprung auf die Unterversion war nötig, da ab 1.6 das Plugin mind. Version 2.5 von WordPress benötigt. Hier hat sich einiges bzgl. des Uploads geändert.

RESTful Authentication mit Rails 2.0 Tutorial

16. März 2008

Seit dem Ruby on Rails 2.0 im Dezember 2007 erschienen ist, hört man in diesem Zusammenhang immer wieder ein Schlagwort: RESTful. Einer der populärsten Erweiterungen für die Authentifizierung ist das Restful Authentication Plugin von Rick Olson, dass auf “acts as authenticated” basiert. Das Plugin bringt genau das mit, was man sich unter einer vollwertigem Registrierung und Authentifizierung vorstellt: Registrierung mit oder ohne Aktivierung sowie An- und Abmeldung mit Cookie oder ohne. Wie man das Plugin einrichtet und konfiguriert, möchte ich in diesem Tutorial erläutern. Vorweg muss ich allerdings anmerken, dass der Großteil dieses Tutorials nicht auf meinem Mist gewachsen ist, sondern auf einem einem Blogeintrag von Ekerete Akpan basiert. Ich hab seinen Beitrag ins deutsche Übersetzt und einige Erweiterungen hinzugefügt. Da ich derzeit intensiv an einer Benutzer-Authentifizierung arbeite, werde ich das Tutorial sukzessive erweitern.

Voraussetzungen
Für die weitere Vorgehensweise wird vorausgesetzt, dass Rails 2.0 installiert ist, ein Projekt vorhanden ist, und das in der Datenbank keine Tabelle “Users” existiert.

Installation
Zunächst muss das Plugin installiert werden. Dafür öffnen wir die Konsolse und wechseln in unser Projekt. Mit dem folgenden Befehl wird das Plugin installiert:

[cc lang="rails"]ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/[/cc]

Generator
Das Plugin bringt einen eigenen Generator mit, welcher den Controller, das Model, die Views und einen Observer erstellt. Darüberhinaus passt der Generator auch die routes.rb an, und fügt entsprechende Einträge für den User und Session Controller ein. Der Session Controller kümmert sich um die An- und Abmeldung, während der User Controller die Registrierung übernimmt. Zwei Generatoren stehen zur Auswahl.

Wollen wir einen Registrierung ohne Aktiverung nutzen ist folgender Befehl zu verwenden:
[cc lang="rails"]ruby script/generate authenticated user sessions[/cc]

Für eine Registreriung mit Aktivierung verwenden wir folgenden Befehl:
[cc lang="rails"]ruby script/generate authenticated user sessions –include-activation[/cc]

Migration
Als nächstes müssen wir die Datenbank mit der nötigen Tabelle für die Benutzer füttern. Dafür führen wir eine Migration durch:
[cc lang="rails"]rake db:migrate[/cc]

Ändern der Routes
Damit alle Actions im richtigen Controller landen, müssen wir als nächstes die Routes anpassen. Wir öffnen die Datei config/routes.rb und fügen unsere benötigten Routes ein:
[cc lang="rails"]map.activate ‘/activate/:activation_code’, :controller => ‘users’, :action => ‘activate’
map.signup ‘/signup’, :controller => ‘users’, :action => ‘new’
map.login ‘/login’, :controller => ‘sessions’, :action => ‘new’
map.logout ‘/logout’, :controller => ‘sessions’, :action => ‘destroy’[/cc]

Hier sieht man, dass für eine Actions, die bereits vorhandenen Controller Users und Sessions wiederverwendet werden. Natürlich hätte man hier auch eigene Controller definieren können.

Observer
Für die E-Mail Aktivierung benötigen wir noch einen Observer. Dafür öffnen wir die config/enviroment.rb und fügen innerhalb des Rails::Initializer.run Block den folgenden Observer ein:
[cc lang="rails"]config.active_record.observers = :user_observer[/cc]

E-Mail Versand konfigurieren
Vor Rails 2.0 konnte man eigene Konfigurationen (z.B. für den E-Mail Versand) direkt in die Datei config/environment.rb einfügen. Mit Rails 2.0 gibt es dafür das Verzeichnis config/initializers, in dem Konfigurationsabschnitte abgelegt werden können. Diese werden dann beim Laden eines Plugins automatisch initialisiert. Dies machen wir uns für die E-Mail Konfiguration zu nutzen. Wir erstellen die Datei mail.rb (kann auch jeden anderen Name haben) mit dem folgenden Inhalt:
[cc lang="rails"]ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => “smtp.domin.de”,
:port => 25,
:domain => “www.domain.de”,
:authentication => :login,
:user_name => “benutzername”,
:password => “passwort”
}[/cc]

Die Einstellungen sind wie folgt definiert:
Address: Adresse des SMTP-Servers.
Port: Port des SMTP-Server (i.d.R. 25)
Domain: Domainame mit dem sich Rails authentifiziert
Authentication: Authentifizierungsmethode am SMTP-Server (i.d.R. ‘login’)
User_name: Benutzername des SMTP-Benutzers
Passwort: Passwort des SMTP-Benutzers

Möchte man nicht SMTP, sondern z.B. Sendmail nutzen, reicht die folgende Befehlszeile:
[cc lang="rails"]ActionMailer::Base.delivery_method = :sendmail[/cc]

E-Mail Parameter
Für die abschießende Konfiguration müssen wir noch einige Parameter anpassen. Wir öffnen die Datei config/environments/development.rb und fügen die folgende Zeile ein, bzw. passen diese an:

[cc lang="rails"]SITE_URL = “localhost:3000″[/cc]

In der Datei config/environments/production.rb ändern wir diese Zeile wie folgt

[cc lang="rails"]SITE_URL = “server.de”[/cc]

Anschließend öffnen wir die Datei app/models/user_mailer.rb und ändern dort folgende Einträge wie folgt ab:

[cc lang="rails"]@body[:url] = “http://#{SITE_URL}/activate/#{user.activation_code}”
@body[:url] = “http://#{SITE_URL}/”[/cc]

Mit dieser Konfiguration läuft die Registrierung sowohl in der Production, als auch in der Develoment Umgebung. Den Parameter SITE_URL muss man natürlich seinen Gegebenheiten entsprechend anpassen. Die eigentliche Konfiguration ist damit abgeschlossen.

Möchte man Änderungen an den beiden E-Mail Templates durchführen, findet man die Vorgaben in der Datei app/views/user_mailer/activation.html.erb und app/views/user_mailer/signup_notification.html.erb.

Nach der durchgeführten Installation und Konfiguration sollte man auf jeden Fall den Webserver neu starten.

Nach der Installation
Wie geht uns nun weiter? Nach der Installation steht uns unter http://localhost:3000/signup die Registrierung zur Verfügung. Unter http://localhost:3000/login kann sich der registrierte Benutzer anmelden. Mit dem Aufruf von http://localhost:3000/logout meldet sich der Benutzer ab.

Arbeiten mit Authentifizierung
Damit uns die Authentifizierung in unserer gesamten Anwendung zur Verfügung steht, nehmen wir aus der Datei controllers/sessions_controller.rb die Zeile:

[cc lang="rails"]include AuthenticatedSystem[/cc]

und fügen sie in die Datei controllers/application.rb ein. In der Datei controllers/users_controller.rb können wir anschließend den Eintrag ebenfalls entfernen. Damit stehen uns alle Funktionen des Plugins in unserer kompletten Anwendung zur Verfügung. Darin enthalten ist u.a. die Funktion logged_in?, mit der wir prüfen können, ob ein Benutzer eingeloggt ist. So könnte z.B. der Login-Dialog wie folgt aussehen:


Welcome user

< % if logged_in? %>

Hallo, < %= self.current_user.login %>

< % else %>

< % end %>

Authentifizierung
Der Sinn eines solchen Systems ist ja, bestimmten Content nur authentifizierten Benutzern zugänglich zu machen. Deshalb müssen wir unsere Controller mit entsprechenden Aufrufen ausstatten, so dass sie auch nur angemeldete Benutzer “rein” lassen. Hierfür können wir sog. before_filter benutzten. Wollen wir einen bestimmten Bereich unserer Anwendung schützen, fügen wir einfach den Aufruf

[cc lang="rails"]before_filter :login_required[/cc]

in den Controller ein. Ruft ein nicht angemeldeter Benutzer nun die entsprechende Seite auf, wird er automatisch auf die Login-Seite weitergeleitet.

In einigen Situationen kann es vorkommen, dass nicht alle Actions eines Controllers eine Authentifizierung benötigen. Möchten wir nur bestimmte Actions schützen, können wir diese ebenfalls im before_filter angeben:

[cc lang="rails"]before_filter :login_required, :o nly => [ :edit, :update ][/cc]

In diesem Beispiel benötigen nur die Actions edit und update eine Authentifizierung. Alle anderen Actions können ohne Anmeldung aufgerufen werden.

Super Passwort!

12. März 2008

Wenn man die Web-Betreuung einer kleinen Firma mit einer handvoll Domains, drei Datenbanken und einem kleinen CMS übernimmt, geht man eigentlich davon aus, dass der Vorgänger genauso sorgfältig gearbeitet hat, wie man selbst. Dies gilt insbesondere für die Vergabe der Passwörter. Denn wenn schon der Kunde seine Passwörter nicht nach den höchsten Regeln des Chaos vergibt, sollte dies zumindest der zuständige “Administrator” tun. Aber auch hier scheint bei einigen Leuten die nötige Sensibilisierung für Passwörter noch nicht angekommen zu sein. Wenn ich nämlich sehe, wie jemand quer die Bank für Kundenlogin, FTP-Zugang und CMS das gleiche, einfache Passwort “erfolg” vergibt, dann läuft es mir kalt den Rücken runter.

Katzen und so …

12. März 2008

Jetzt ist es soweit. Katzencontent hat meinen Blog erreicht. Aber diese beiden Animations-Kurzfilme von Simon Tofield sind mehr als sehenswert.

In der Fortsetzung erkenne ich an fast jeder Stelle eine mir seit längerem bekannte Katze wieder.

via: Stefan Niggemeier

WordPress 2.5 steht in den Startlöchern

9. März 2008

Morgen (10. März 2008) erscheint Bald Am 17. März 2008 soll das neueste Release von WordPress erscheinen, welches die Versionsnummer 2.5 tragen wird. Ich bin ziemlich gespannt auf die neuen Features, vor allem aber auf den neu gestalteten Adminbereich. Auch bei der Plugin-Entwicklung wurden neue Funktionen eingebaut, so dass ich mein Plugin anpassen muss. Dies betrifft aber eher die optische Darstellung im Adminbereich, als die eigentliche Funktionalität. Wer nicht warten kann und morgen direkt die neue Version einspielt, sollte auf jeden Fall vorher eine Sicherung durchführen. Sowohl von der Datenbank, als auch von allen Dateien und Daten.

Alternatives Ende von I Am Legend

6. März 2008

Glaubt man verschiedenen Quellen im Internet, dann wurden diverse Teile von “I Am Legend” während der Dreharbeiten erneut aufgenommen. Eine der größten Neuaufnahmen war das Ende. Die erneute Aufnahme sollte dem Film einen kommerzielleren Abschluss geben. Das alternative Ende ist auf der Special Edition DVD enthalten, welche am 18. März 2008 in den USA erscheint. Allerdings ist das alternative Ende bereits (nicht ganz so offiziell) bei YouTube gelandet. Und wenn ich ganz ehrlich bin, finde ich das “neue” Ende sogar wesentlich besser als das “alte”.

ACHTUNG: Wer den Film “I Am Legend” nicht gesehen hat, sollte besser nicht auf Play drücken!

24: TV-Film im Herbst – 7. Staffel erst 2009

6. März 2008

Obwohl bereits 8 Folgen der 7. Staffel gedreht wurden, bekommen Fans der Kultserie den neusten Tag im Leben von Jack Bauer erst in 2009 zu sehen. Der eigentliche Start sollte am 13. Januar 2008 erfolgen, musste aber aufgrund des Autorenstreiks auf unbestimmte Zeit verschoben werden. Wie der Sender Fox nun bekannt gegeben hat, wird die 7. Staffel erst in 2009 ausgestrahlt. Dafür wird es aber ein zweistündiges “TV-Movie” im Herbst geben, welches zwischen der 6. und 7. Staffel angesiedelt ist.

via: aintitcool

Suchtmittel

6. März 2008

Lieber Herr Starbucks,

Ihnen ist mit dem “White Cocolate Mocca” (ohne Sahne) ein echtes Meisterwerk gelungen. Normalerweise sollte man bei einem Preis von 4 EURO (7,82 DM) für einen mittleren Becher Kaffee mit Sirup und Milch keinen Fuss mehr in Ihren Laden setzen. Aber das Zeug schmeckt einfach geil!

Lufthansa Pilot rettet Maschine im Landeanflug

3. März 2008

Orkantief “Emma” hat in den letzten Tagen in ganz Europa Verwüstungen angerichtet. Durch die starken Winde hätte dies auf dem Hamburger Flughafen beinahe zu einem Unfall geführt. Doch gerade Seitenwinde beim Landeanflug gehören zum regelmäßigen Training der Piloten.

Trotzdem möchte ich in der Maschine nicht gesessen haben.

via: neunzehn72

DVB-T Sender wechseln die Frequenz in NRW

3. März 2008

Wer sich morgen wundert, dass sein DVB-T Reciever kein Bild mehr von sich gibt, der sollte einfach einen erneuten Sendersuchlauf durchführen. Denn in der Nacht vom 3. auf den 4. März 2008 wechseln einige Sender ihre Frequenzen. Nach Informationen des Westdeutschen Rundfunks ist der Frequenzwechsel nötig, um eine Überschneidung von analogen und digitalen Signalen zu vermeiden.

Hotline Mitarbeiter bei namhaften Reciever-Herstellern möchte ich morgen nicht sein …

via: golem.de