typo3: Benutzergruppe von Benutzer per SQL auslesen

Will man die Benutzergruppe eines Benutzer in typo3 aus der Datenbank auslesen, steht man zunächst einmal vor einem Problem: Denn alle Benutzergruppen stehen in der Tabelle fe_users im Feld usergroup als Komma-Separierte Liste drin.

Zwar kennt mysql die IN Abfrage, doch leider funktioniert das folgende nur dann wenn die Benutzergruppe als erstes kommt:

SELECT username FROM fe_users WHERE usergroup IN (3);

Auch LIKE könnte man verwenden, dass würde allerdings auch 13, 23, 33, usw. matchen und ist somit keine praktische Lösung:

SELECT username FROM fe_users WHERE usergroup LIKE '%3%';

Zum Glück kennt SQL noch eine, grösstenteils unbekannte Funktion: FIND_IN_SET(), mit welcher man die Abfrage machen kann:

SELECT username FROM fe_users WHERE FIND_IN_SET(3,usergroup)>0;

Tipp: Will man direkt nach einem Gruppen-Namen, anstelle der ID suchen, kann man noch eine SQL Subquery einbinden:

SELECT username
FROM fe_users
WHERE
FIND_IN_SET((SELECT uid FROM fe_groups WHERE title='MeineGruppe'),usergroup)>0;
Die Abfrage „>0“ ist nicht unbedingt erforderlich, die Abfrage würde also grundsätzlich auch mit:

SELECT username FROM fe_users WHERE FIND_IN_SET(3,usergroup);

funktionieren.

Referenzen

Published by

Steven Varco

Steven ist ein Redhat RHCE-Zertifizierter Linux-Crack und ist seit über 18 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.