Authentifizierung gegen phpbb3 für eigenes Websitemodul

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
mellow
Mitglied
Beiträge: 277
Registriert: 13.05.2004 15:36

Authentifizierung gegen phpbb3 für eigenes Websitemodul

Beitrag von mellow »

Hi Leute,

hab schon eine ganze Weile recherchiert aber nichts Brauchbares gefunden.

Problem:
Ich würde gerne erstmal unabhängig vom Forum (das wird auf der Seite vorerst nicht vorkommen/angezeigt werden) die Anmelde- und Login-Routine des phpbb3 nutzen wollen, um auf phpbb-unabhängige Seitenbereiche der Website Zugriff zu bekommen. Das sind u.a. selbstgeschriebene Module, die frei von phpbb3 funktionieren. Sollte dann später das Forum dazukommen, müsste man nicht nochmal eine neue Registrierung durchlaufen und könnte auf eine bestehende Datenbank an Usern zurückgreifen. Ist sowohl für mich als Admin als auch für den User einfacher.

Gibt es dazu irgendwo ein How-To oder ein Mod, den ich bisher übersehen habe?

Danke für Hinweise im Vorfeld!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Authentifizierung gegen phpbb3 für eigenes Websitemodul

Beitrag von gn#36 »

Zunächst einmal der Hinweis: phpBB steht unter der GPL, d.h. wenn du Teile davon nutzen willst muss deine Software unter einer kompatiblen Lizenz stehen. Das ist insbesondere dann relevant, wenn du irgendwann mal auf die Idee kommst, die Software deiner Seite weiterzugeben oder zu vermarkten.

Es gibt mehrere Möglichkeiten: Du kannst deine Seite so aufbauen, dass sie vollständig als Extension läuft, oder du bindest lediglich einige Teile von phpBB ein. Ersteres macht möglicherweise Sinn, wenn du noch nichts hast, weil du dann alles auf der Infrastruktur von phpBB aufbauen kannst, zweiteres wenn du die übrige Seite schon hast. Der Aufbau als Extension schränkt dich nicht ein in der Struktur der Seite - du kannst trotzdem das Forum in einen Unterordner legen und erst mal nicht verwenden o.ä.

Falls du "nur" ein bisschen was ergänzen willst: Für den Login und die Registrierung wirst du schon mal einige Teile von phpBB brauchen, selbst wenn du das Forum ansich nicht nutzt.
Zunächst brauchst du in jeder Seite die geschützt sein soll die Vorlage für in phpBB eingebundene Seiten. Die Vorlage ist für phpBB 3.0, aber für 3.1 sollte das auch noch klappen, auch wenn man es eigentlich jetzt etwas anders aufbaut. Das ermöglicht dir zu Überprüfen ob jemand eingeloggt ist ($user->data['is_registered']) und ob er gewisse Rechte hat ($auth->acl_get(...)). Du kannst dir auch eigene Rechte definieren, die du dann speziell für deine Seite einsetzt - diese würde ich egal wie du ansonsten beim Einbinden vorgehst auf jeden Fall in eine Extension legen.

Daneben ermöglicht dir das, einen Login zu erzwingen mittels der Funktion login_box(). Für all das muss das phpBB natürlich installiert sein und auch wenn du es ansonsten nicht nutzt werden Benutzer für den Login und die Registrierung zum phpBB weitergeleitet. Du solltest also ggf. von den benötigten Seiten den Style anpassen (KB:create31style). Außerdem solltest du die Weiterleitung nach der Registrierung umleiten, so dass die User nach der Registrierung wieder auf deiner Seite landen und nicht auf einem leeren Forenindex.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
mellow
Mitglied
Beiträge: 277
Registriert: 13.05.2004 15:36

Re: Authentifizierung gegen phpbb3 für eigenes Websitemodul

Beitrag von mellow »

Erstmal herzlichen Dank für die umfangreiche Antwort. Ich werde mir das alles später anschauen. Nur einige kurze Anmerkungen auf die Schnelle:

- Danke für den Hinweis mit den Lizenzen, ich werde mich dahingehend einlesen aber glaube nicht, dass es da zu Unstimmigkeiten kommen wird, da im Endeffekt nur eine kleine Welt um das Forum herum gesetzt wird
- das Forum selber ist aber noch nicht so weit, direkt ab jetzt zu starten und wird noch einige Monate Entwicklungszeit benötigen. Es wird aber definitiv in der Seite mit vorkommen. Nur zu einem späteren Zeitpunkt
- Das Buzzword "login_box" gefällt mir, jedenfalls wie ich mir das vorstelle. Denn sämtliche Registrierungs- und Loginaktivitäten sollten, wenn möglich, in einer fancy box stattfinden und bei Erfolg einfach wieder ausgeblendet werden. Weiterleitungen auf andere Seiten möchte ich vermeiden. Kannst du mir sagen, ob sowas umgesetzt ist bzw. umsetzbar ist?


Problemfrage: Das selbstgebaute Modul ins phpbb einzubinden halte ich für schwierig, wenn ich es vorerst strukturell getrennt haben möchte, da es sonst zu überschneidenden Kontaktpunkten mit dem Forum kommt. Im Endeffekt möchte ich das phpbb nur tangieren (beim Loginprozess). Beim Launch des Forums relativiert sich dieses Problem, jedoch wird dieses noch eine ganze Weile dauern, da ich es komplett individuell umgestalten werde und der Konzeptidee meiner Seite unterwerfe. Dieser Arbeitsaufwand wird "vorsichtig" auf mehrere Monate geschätzt.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Authentifizierung gegen phpbb3 für eigenes Websitemodul

Beitrag von gn#36 »

Du musst das Forum ja noch nicht einrichten - wenn du aber Funktionen daraus nutzen willst müssen die logischerweise da sein und das Forum muss auch installiert sein - selbst wenn es keine Foren o.ä. gibt, damit die Datenbank mit den Benutzerdaten überhaupt existiert. Wenn du die Benutzer verwalten willst, dann wirst du den Adminbereich brauchen oder den persönlichen Bereich für die Verwaltung der Gruppen bzw. damit die Benutzer ihre eigenen Daten verwalten können und z.B. ggf. ihre Mailadresse ändern können. Du kannst das Forum ja trotzdem leer lassen und ggf. die index.php des Forums ersetzen um Benutzer aus dem Forum zu halten, solange es noch nicht benutzbar ist.

Natürlich kannst du auch die Installation machen und dann mit eigenen Modulen in deiner Software die Datenbank selber mit den Werten füttern, aber das macht natürlich viel mehr zusätzliche Arbeit.

Die Funktion login_box arbeitet serverseitig und stellt dann statt dem Seiteninhalt ein Loginfenster dar. Nach dem Login wird auf die ursprüngliche Seite zurückgeleitet. Das ist aber sicherheitstechnisch in meinen Augen anders auch gar nicht sinnvoll - wenn die Inhalte auch so an den Browser geschickt werden und der dann nur per Javascript nach dem Passwort gefragt wird, dann kann man ja auch einfach Javascript abschalten und kommt ohne Login an die Daten (und zwar auch dann wenn du kompliziertere Methoden nutzt um den Inhalt noch irgendwie zu verstecken, mehr Aufwand von deiner Seite bedeutet nur etwas mehr Aufwand für den User der es auslesen will).

Letztlich baust du dein Modul mit beiden Varianten in das phpBB ein. Gerade der "direkte" Einbau als Erweiterung hätte aber den Vorteil, dass du ziemlich abgekapselt bist - mit ein bisschen Overhead für Steuerdateien steckst du deinen Programmcode 1:1 in eine Controller-Klasse und phpBB kümmert sich um den Aufruf. Dabei gibt es, solange du keine Globalen Variablen verwendest, keine störenden Überschneidungen zwischen beiden Systemen - alles was du an Objekten vom phpBB brauchst kannst du dir explizit übergeben lassen.

Der Einbau in der "Vorlage für in phpBB eingebundene Seiten" hat diesen Vorteil nicht - wenn dein Code ausgeführt wird und gleiche Variablennamen nutzt, dann überschreibt er damit ggf. phpBB Variablen. Solange du deine Berechtigungsprüfungen und Loginboxen an den Anfang legst ist das vermutlich nicht tragisch und deshalb einfacher, aber es kann durchaus zu Problemen führen, z.B. bei gleich benannten Funktionen ohne differenzierenden Namespace.

Alles andere ist in irgend einer Form sehr aufwändig: Wenn du die Module die du brauchst aus phpBB extrahieren willst, dann brauchst du einen ganzen Baum an Dateien durch die gegenseitigen Abhängigkeiten (Session -> User -> Datenbank und functions_xy etc.). Alternativ bleibt dir nur, die Module für dein Programm selber zu schreiben und die Daten in die richtigen phpBB Tabellen zu legen, aber das halte ich für noch viel aufwändiger, wenn man wirklich alles bedenken will.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
mellow
Mitglied
Beiträge: 277
Registriert: 13.05.2004 15:36

Re: Authentifizierung gegen phpbb3 für eigenes Websitemodul

Beitrag von mellow »

Danke dir. Ich werde das nochmal überdenken. Dass ich aber ein installiertes phpbb3 benötige ist selbstverständlich. :grin:
Ich werde es jedoch vorerst nirgendwo verlinken. Der direkte Einbau ins phpbb war auch ein Gedanke, mit dem ich gespielt habe. Da werde ich aber um externe Hilfe nicht herumkommen, da ich selbst aus der Design-Ecke komme, mit der konzeptionellen Idee. Mein Wissen beläuft sich dahingehend nur auf HTML/CSS/JS (um statische Seiten umsetzen zu können). PHP hab ich irgendwie immer nur "nebenbei" ein wenig gemacht. Belese mich gerade in die Materie mit der Lektüre "PHP 5.5 und MySQL 5.6". Mit Datenbanken kann ich umgehen.

Es wird ein Haufen Arbeit aber allein deine Aussage, dass es funktionieren kann macht Hoffnung. :wink:
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Authentifizierung gegen phpbb3 für eigenes Websitemodul

Beitrag von gn#36 »

Was ich primär sagen wollte ist, dass ein Einbau in phpBB potenziell sehr viel weniger Arbeit macht, als das Rad neu zu erfinden indem du deine Datenbankschnittstelle selber schreibst. ;)
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Extension Bastelstube“