Addon für WBB 2.3.3 (mit anderen Versionen nicht getestet)
History
1.1:
- User können für eine Neben-ID keine Haupt-ID einstellen, die ihrerseits eine Haupt-ID hat (also Baum-Konstruktionen werden vermieden).
- User können für eine ID, der bereits Neben-IDs zugeordnet sind, nicht ihrerseits eine übergeordnete Haupt-ID einstellen (auch das zur Vermeidung von Baumkonstruktionen).
- User können für eine Neben-ID nur noch eine Haupt-ID einstellen, wenn die Passwörter identisch sind (so kann nicht ein User für eine falsch eingetragene Haupt-ID die Einstellung blockieren).
- Eine überflüssige Datenbankabfrage entfernt im UserCP, wenn der User keine Haupt-ID eingestellt hat.
- Von einer Neben-ID aus (also wenn für den Account eine Haupt-ID eingestellt ist) kann das Passwort nicht mehr geändert werden, auch nicht durch Direkteingabe der URL.
- Sprachvariablen statt Klartext in den Templates.
Beschreibung:
Ein Benutzer, der mehrere Forum-Accounts hat, kann zwischen diesen Accounts problemlos hin- und herwechseln . Das ist praktisch z.B. für Rollenspiel-Foren. Er trägt dazu bei allen Neben-IDs den Namen seiner Haupt-ID unter Profil>Einstellungen ein. Die Passwörter müssen zuvor schon identisch sein; das Passwort kann dann nur noch bei der Haupt-ID für alle IDs gleichzeitig geändert werden.
Der User sieht dann ein Drop-Down-Menü, wo er bequem den Benutzer auswählen kann (Haupt-ID ist dort mit einem * markiert). Er landet nach dem ID-Wechsel nicht auf der Startseite, sondern wieder genau da, wo er war (praktisch, wenn einem vor der Beitragserstellung auffällt, dass man mit der falschen ID eingelogged ist).
Copyright, Credits & Disclaimer:
Ich, Dennis Jlussi, habe dieses Addon erstellt auf Ideengrundlage eines Hacks für WBB Lite von 'Jump'. Irgendwelche Lizenzbestimmungen spare ich mir, macht mit dem Code, was Ihr wollt; wer den nötigen Anstand hat, wird meinen Namen auch bei Weiterentwicklungen sicherlich in den Credits erwähnen.
Der Einbau geschieht auf eigene Gefahr. Ich kann nicht dafür garantieren, dass das Addon das tut, was es soll und auch nicht dafür, dass keine Daten verloren gehen oder keine Sicherheitslücken entstehen. Das Addon sollte nur von Leuten eingebaut werden, die den Code nachvollziehen können und wissen, was sie tun.
Demo:
www.tropicali.de - Das Micronation-Rollenspiel mit karibischem Flair.
Einbauzeit:
Je nach Geschick ca. 15 bis 30 Minuten.
Sicherheitsaspekte:
Es ist erforderlich, dass der Benutzer für alle seine Accounts das gleiche Passwort einstellt. Wenn das Passwort irgendwie von einem Dritten in Erfahrung gebracht wird, kann er also auf einmal mehrere Accounts kapern. Allerdings dürfte es ohnehin gängige Praxis sein, dass ein Benutzer für seine Accounts das gleiche Passwort einstellt.
Wenn zwei Benutzer das gleiche Passwort haben und der eine den anderen als Haupt-ID einträgt, dann kann er dessen Account kapern. Dass das zufällig passiert, dürfte allerdings extrem unwahrscheinlich sein und wer weiß, welcher andere Benutzer das gleiche Passwort verwendet, kann den Account auch ohne dieses Addon kapern.
Zum Thema SQL Injektionen: Soweit die originalen Formulare im UserCP geändert werden, werden die übernommenen Formularvariablen exakt so aufbereitet, wie die WBB-Originalvariablen. Die einzige Formularvariable aus der neuen changeuser.php, die in eine Datenbankabfrage übernommen wird, wird vorher durch intval() aufbereitet. Insofern dürften durch das Addon keine zusätzlichen Sicherheitslücken entstehen.
Verbesserungswürdig:
- Der Admin hat im ACP keine Kontrolle über diese Usereinstellungen, eventuelle Eingriffe müssen daher direkt in der Datenbank erfolgen. Schön wäre in dem Zusammenhang vielleicht auch, das Feature nur für bestimmte Gruppen zu erlauben.
- Die Texte im UserCP sollten vielleicht in Sprachvariablen übernommen werden.
- Wird eine ungültige Haupt-ID Einstellung vom User im Forumlar abgesendet, so wird kommentarlos nichts gespeichert; eine Fehlermeldung wäre natürlich schöner.
- Ein hübsches Setup-Programm habe ich auch nicht geschrieben.
Bitte zuallererst die Datenbank komplett sichern (Backup) und auch die Forum-Dateien sichern, zumindest die usercp.php und die functions.php. Das Forum im ACP offline setzen.
Erledigt
Im ACP unter SQL-Befehl ausführen (dort die Zeilen einzeln ohne Semikolon) oder am besten im phpMyAdmin in der Forum-Datenbank die folgenden SQL-Befehle ausführen.
Wenn das Forum eine andere Nummer als 1 hat, muss man die entsprechend anpassen.
Erledigt
Entweder in die phpinclude.tpl oder besser in die acp/lib/functions.php an beliebiger Stelle (natürlich zwischen zwei anderne Funktionen und nicht in einer anderen mittendrin) folgendes einfügen:
Erledigt
Die Datei usercp.php in dem Editor deines Vertrauens öffnen und wie folgt bearbeiten. Dabei auf die Anweisungen genau achten (darüber, darunter, ersetzen).
Suche: (grobe Richtung: um Zeile 470)
Achtung: Dies ist eine Zeile, auch wenn es nicht mehr in eine Zeile passt :)
Ersetze durch:
Achtung: Auch hier sind die beiden Zeilen, die $db->unbuffered_query enthalten, jeweils nur eine Zeile und nicht jeweils 2!!!
Erledigt
Suche: (grobe Richtung Zeile 510)
Füge darüber ein:
Erledigt
Suche: (grobe Richtung Zeile 560)
Füge darunter ein:
Erledigt
Suche: (grobe Richtung Zeile 590)
Ersetze durch:
Erledigt
Die in diesem Paket enthaltene Datei changeuser.php ins Hauptverzeichnis des Forums hochladen.
Erledigt
Im ACP auf "Sprachpaket importieren" klicken, dort unter "vom eigenen Rechner hochladen" die in diesem Paket enthaltene changeuser.lng auswählen und "starten". Auf der folgenden Seite "in ein bestehendes Sprachpaket importieren" auswählen und das Sprachpaket (normalerweise "Deutsch") auswählen. Dann abermals "starten".
Erledigt
Suchen:
Ersetzen durch:
Erledigt
Suchen:
Ersetzen durch:
Erledigt
Suchen:
Darüber einfügen:
Erledigt
Das Drop-Down-Menü kann man prinzipiell überall einfügen, wo man es gerne hätte. Die header.tpl bietet sich an, es geht natürlich aber auch an jeder anderen beliebigen Stelle.
In ein Template Einfügen:
Erledigt
Das Forum im ACP wieder online schalten und ausprobieren :)
Erledigt