Single-Sign-On von Drupal und phpRaider3
am 14.06.2010 - 10:02 Uhr in
Hallo!
Ich betreibe eine Gildenhomepage über Drupal und habe parallel einen Raidplaner auf Basis von phpRaider3 am Laufen. Zur Zeit müssen meine Besucher sich auf beiden Seiten extra anmelden. Ich möchte jedoch diesem (unnötigen) Umstand Abhilfe schaffen und folgendes einrichten:
1. Bei Account-Erstellung in Drupal soll automatisch auch ein Account im phpRaider angelegt werden.
2. Beim Einloggen in Drupal sollen automatisch zwei Cookies gesetzt werden: Username im Klartext, Passwort als MD5.
Das müsste doch eigentlcih möglich sein, wenn ich die Drupal-PHPs direkt verändere oder? Ich habe mich etwas im Modul "User" umgeschaut, bin aber noch nicht 100% sicher, an welcher Stelle genau ich die SQL-Befehle einfügen muss. Meine Fragen:
Ist mein Gedankengang richtig, dass ich in Drupal nach der User-Registrierung einfach die SQL-Behle einfügen kann, die der phpRaider zum Erstellen eines neuen Nutzerkontos nutzt (INSERT etc).?
Ist es außerdem korrekt, dass ich bei erfolgter Anmeldung per setcookie einfach die Cookies setze? Wenn ja, aus welcher Variablen kann ich das Passwort und den Nutzernamen auslesen?
Kann mir vielleicht jemand den genauen Ort "im Drupal" sagen, an dem ich den Code einfügen muss?
Vielen Dank für die Hilfe!
- Anmelden oder Registrieren um Kommentare zu schreiben

hook_user
am 14.06.2010 - 10:27 Uhr
Hallo.
1. Bei Account-Erstellung in Drupal soll automatisch auch ein Account im phpRaider angelegt werden.
2. Beim Einloggen in Drupal sollen automatisch zwei Cookies gesetzt werden: Username im Klartext, Passwort als MD5.
Ok, das sollte machbar sein.
Das müsste doch eigentlcih möglich sein, wenn ich die Drupal-PHPs direkt verändere oder? Ich habe mich etwas im Modul "User" umgeschaut, bin aber noch nicht 100% sicher, an welcher Stelle genau ich die SQL-Befehle einfügen muss.
STOP! An den Dateien des Drupal-Kerns und auch anderer Modul wird nichts geändert! Nie.
1. baust Du Dir damit unter Umständen Sicherheitslücken und anderen Probleme ein und 2. ist die Änderung nach dem nächsten Update wieder weg.
Also nein, Du änderst nichts an der Datei user.module.
Kann mir vielleicht jemand den genauen Ort "im Drupal" sagen, an dem ich den Code einfügen muss?
Erstelle Dir ein Modul und verwende dort eine Implementierung von [api:hook_user], um bei Neuanlage eines Benutzers Deine Funktionen auszuführen. Den Benutzernamen und das Kennwort hast Du dann im dort verfügbaren Objekt
$accountvorliegen.hth,
Stefan
Danke für die prompte
am 14.06.2010 - 10:35 Uhr
Danke für die prompte Antwort, ich werde mich mal mit der hook_user()-Funktion beschäftigen und hier ggfls. rückmelden.
Die Möglichkeit eines Updates, das die Änderungen zunichte macht, habe ich gar nicht in Erwägung gezogen. Vielen Dank auch hierfür :)
Hier meine SSo-Lösung
am 14.06.2010 - 13:55 Uhr
Danke noch einmal für den Super-Tipp, es hat fast auf Anhieb geklappt, wie ich das wollte!
Das Single-Sign-On klappt schonmal - für alle, die das so ähnlich brauchen:
(www.test.de ist hier Beispiel diue Webseite, der phpraider3 ist über raids.test.de erreichbar)
Hier der Code aus der sso.info:
; $Id$name = SSO
description = Bietet Single Sign on fuer Drupal und den phpRaider3
core = 6.x
Und die dazugehörige sso.module:
<?php
function sso_user($op, &$edit, &$account, $category = NULL) {
// Cookies setzen beim Einloggen
if ($op == 'login') {
setcookie("username", $account->name, 0, "", ".test.de"); //.test.de, damit Cookie
setcookie("password", $account->pass, 0, "", ".test.de"); // in der gesamten Domain erreichbar ist
}
// Cookies löschen beim Abmelden
if ($op == 'logout') {
setcookie("username", $account->name, time() - 3600, "", ".test.de");
setcookie("password", $account->pass, time() - 3600, "", ".test.de");
}
}
?>
An der "Einmal-Registrierung" arbeite ich noch, ich muss die SQL-Befehle des phpRaiders noch finden.