Teaser
The more I see, the more I know
The more I know, the less I understand
clear

SMF - Typo3 Bridge

wird im September 2009 veröffentlicht

will be released in September 2009




SMF -> Typo3 Bridge

 1) Was ist "smf2typo3feuser" ?
"smf2typo3feuser"ist eine Extension für Typo3 und dient zur Übernahme der User aus der Forensoftware Simple Machines (SMF) in Typo3. 

"smf2typo3feuser" wurde von der Community Deutsche-in-london.net in Auftrag gegeben und unter der GPL veröffentlicht. Die Realisierung nahm die Firma "Neonblue" vor. Die aktuelle Version findet man hier zum Download.


2) Welche Funktionalität hat "smf2typo3feuser" ?

Wichtig: Es findet keine zwei Wege Sychronisation statt. Stattdessen ist Simplemachines (SMF) das "führende" System für User und Gruppen. Wenn man sich bei Typo3 anmeldet, dann wird geprüft ob der Username bei SMF existiert und -sofern vorhanden- das Passwort überprüft. Anschließend wird das Passwort sowie die Gruppen in Typo3 eingetragen.

Man kann nach wie vor auch User und Gruppen in Typo3 pflegen, jedoch muss man aufpassen, daß diese nicht mit Namen in SMF kollidieren. Diese User stehen aber nur in Typo3 zur Verfügung. 

3) Installation
Die Installation der Extensione erfordert ein wenig Aufwand. Ein SSH Zugang zur SMF und Typo3 Installation ist empfehlenswert, ein FTP Zugang tut es zur Not auch. Ohne Zugriff auf die SMF Installation ist eine Installation nicht möglich!

3.1) Installation der Extension
Extension downloaden und installieren. Die Konfiguration der Extension können wir an dieser Stelle zunächst einmal überspringen, die richigen Werte können wir später nachtragen.

3.2) SMF Anpassungen
Im Root-Verzeichnis des SMF Forums erstellen wir ein neues Verzeichnis, in dem wir das Script für die Userverwaltung kopieren. Das Skript finden wir im SMF Unterverzeichnis der Typo3 Extension, also üblicherweise unter /typo3conf/ext/smf2typo3feuser/smf/. 

cd /full/path/to/smf_forum/
mkdir smf2_typo3_bridge
cd smf2_typo3_bridge/
mv /full/path/to/typo3/typo3conf/ext/smf2typo3feuser/smf_* .

Es sollten nun zwei Dateien kopiert worden seinen: smf_users.php sowie smf_database_extension.sql.

Nun müssen wir zunächst die SMF Tabellenstruktur erweitern. In diese Tabelle wird der Usernamen und Passwort eingetragen, mit dem sich später Typo3 an dem Script anmeldet. Hierzu führen wir aus:

mysql -u SMF_FORUM_USER -p'SMF_FORUM_PASS' SMF_DB < smf_database_extension.sql


Die Werte für Usernamen, Passwort und Datenbank kann man aus der Settings.php von SMF entnehmen. Anschließend kann die Datei "smf_database_extension.sql" gelöscht werden.

Nun verbinden wir uns mit der Datenbank und tragen Usernamen und Passwort ein. In diesem Fall wird der Username "user_test" und das Passwort "pass_test" verwendet. Achtung: Das Passwort wird MD5 verschlüsselt abgespeichert.

# mysql -u SMF_FORUM_USER -p'SMF_FORUM_PASS' SMF_DB

mysql> insert into smf_rest_auth (username, password) values ('user_test', MD5('pass_test'));


Zum Schluss können wir zusätzlich noch das Verzeichnis via .htaccess absichern, damit nur Zugriffe von der IP der Typo3 Installation durchgeführt werden:

.htaccess

allow from 192.168.4.23
deny from ALL

Bitte beim dem Verzeichnis und Datei auf die Rechte achten: Das Verzeichnis und die Datei sollten unter der UID/GID des Webserver laufens (SuSE: wwwrun:wwwrun; Gentoo: apache:apache)

 

3.3) User und Gruppenverwaltung

Dazu legen wir zunächst in Typo3 einen Systemordner an, der die ganzen User und Gruppen beinhaltet. In diesem Systemorder legen wir nun die Gruppen an, z.B:

 

3.4) Gruppenmapping

Zunächst die schlechte Nachricht: Gruppen die auf Anzahl der Beiträgen basieren werden leider nicht mit übernommen, da diese in SMF dynamisch verwaltet werden, es existier also keine Info in den SQL Datenbanken.

Um festzustellen, welche Gruppen überhaupt verwendet werden, kann man eine einfache SQL Abfrage bei SMF durchführen:

 

# mysql -u SMF_FORUM_USER -p'SMF_FORUM_PASS' SMF_DB

select smf_members.ID_GROUP as ID ,count(*) as Anzahl,smf_membergroups.groupname as Gruppenname from smf_members LEFT JOIN  smf_membergroups ON (smf_members.ID_GROUP = smf_membergroups.ID_GROUP) group by ID;

 in diesem Beispiel:


Für diese IDs können wir nun ein Gruppenmappping erzeugen.

Für das Gruppenmapping erstellen wir einen Systemorder (in meinem Beispiel) unterhalb des Systemordners für die User und fügen eine neuen Datensatz der Kategorie group_mapping hinzu. Das ganze ist relativ selbsterklärend. Es wird dabei jeweils die Primäre Gruppe von SMF mit der dazugehörigen Typo3 Gruppe verknüpft.

 

3.5) Fertigstellung

Nun haben wir alle Informationen um die Konfiguration zu beenden. Wir gehen wieder in den Extensionsmanager, klicken die Extension an und geben die Konfiguration ein:

  • Seiten ID von dem Systemorder der Gruppen
  • Username und Passwort für die SMF Identifizierung
  • kompletter Pfad zum Skript
  • Standard Gruppe in Typo3 wenn keine SMF Gruppe gesetzt ist