Benutzer strukturieren -> Problem Login und Userlist

  • 0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    17. 02. 2003, 06:46

    Hallo,

    ich habe ca. 400 Website-Benutzer, die ich nach Semestern aufteilen möchte. Zur Strukturierung verwende ich verschieden SysOrdner. Diese sieht wie folgt aus:
    SysOrdner: Website-Benutzer
    - SysUnterordner: MW1
    - SysUnterordner: MW2
    ...
    - SysUnterordner: MW9

    Mit dem Plugin "New Better Login Box" gebe ich die User aus. Auf der Seite MW2 gebe ich zum Beispiel nur die User des Semesters MW2 aus. Das ist auch kein Problem, da ich bei dem Plugin die Datensatzsammlung angeben kann.

    Beim Login mit dem gleichen Plugin kann ich aber nur [b:aefc5a472d]EINE[/b:aefc5a472d] Datensatzsammlung angeben und kann so nicht auf alle User zugreifen. Ich kann auch nicht rekursiv auf die Unterordner zugreifen. So müßte ich für jeden Unterordner ein Login-Form einbinden.

    Der andere Weg alle User in einen SysOrdner zu packen, ließe sich zwar realisieren, allerdings geht mir bei der User List die sehr wichtige Relation zu den Semestern verloren. Eine begrenzte Auswahl der angezeigten User nach Website-Benutzergruppen ist ja direkt auch nicht möglich.

    Wie kann ich die User jetzt sinnvoll strukturieren und beide Funktionen nutzen? Ich muss also entweder rekrusiv auf die User beim Login zugreifen können oder anhand der Benutzergruppen die Benutzerlisten ausgeben können.

    In der Datei "class.tx_newloginbox_pi3.php" könnte man ja anhand von Parametern aus TS die MySQL-Query ändern, aber so tief bin ich noch nicht eingestiegen um den folgenden Befehl zu verstehen.
    [code:1:aefc5a472d]$query = $this->pi_list_query("fe_users");[/code:1:aefc5a472d]
    Für Tips, Ideen und Hilfestellungen bin ich SEHR dankbar!

    Viele Dank,
    Oliver Moser


  • 1
  • PHASER PHASER
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    28. 08. 2003, 21:51

    Hat da schon jemand eine Idee gehabt ?

    Ich habe auch die User in mehreren Systemfoldern (jeder Redakteur hat seine eigenen Usergruppen & User) rumliegen und müßte nun mehrere Loginbereiche
    einrichten... :( "Startpunkt" anstatt der Datensatzsammlung (wie bei dem normalen Login) wäre vielleicht sinnvoller ?

    Vieleicht fällt irgendjemanden was ein ?

    Ciao

    Phaser

  • Jörg Roth Jörg Rot...
    Jedi-Meister
    0 x
    350 Beiträge
    0 Hilfreiche Beiträge
    28. 08. 2003, 23:36

    Kickstarter nehmen, neue Extension anlegen, fe_users um ein Semesterfeld erweitern, die Werte dafür z.b. als DropDown-Feld anlegen. Im Backend für jeden User das Semester einstellen (Fleissarbeit).

    Die pi3-Klasse um das Feld erweitern, ggf. mit in die Suche aufnehmen. Evtl. CODE implementieren, der die Semesterangabe definiert.

    Die UserList könntest Du so auch um ein DropDown erweitern und die Semester zur Verfügung stellen. Genauso die Berechtigung. Proggen musste das aber selber ;)

    Alle Benutzer in einen SysOrdner.

    Nur mal so als Idee.

  • 0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    29. 08. 2003, 01:12

    Hallo Jörg,

    ich habe das genauso gemacht. Mit dem Code-Feld und den Benutzergruppen-Ids. Ich weiß, soll man eigentlich nicht nehmen, aber das hat sich am besten angeboten. So bin ich flexibler als mit PullDown.

    Ich hatte damals die Idee, die ganze Geschichte etwas flexibler zu bauen. Ich wollte die fe_groups tabelle in der tca.php auslesen und dann als Checkbox-Felder ausgeben. Das hat den Vorteil, dass man nur noch die Tabelle der fe_group auslesen muss. Mann könnte dann über ne eigene "local" Extension ganz einfach nur die fe_groups tabelle erweitern und müßte nicht mehr ins PHP rein.

    Das ganze kann man sogar noch weitertreiben. So könnte man im Backend mit Checkboxen festlegen, welche Spalten bei den Userdetails ausgegeben werden.

    Lange Rede ... und ein bisschen wirr

    Aber, wie kann ich in der tca.php die Anweisung "$this->pi_list_query" benutzen? Da hatte ich nämlich tierisch Problem, weil ich da wohl im falschen Objekt stecke. Ich will nicht mit "SELECT * ..." anfangen, da das ja extrem unsauber ist und mit anderen DBs ja gar nicht läuft.

    Viele Grüße und Gute Nacht,
    Olli

  • sw-student sw-studen...
    Jedi-Ratsmitglied
    0 x
    677 Beiträge
    0 Hilfreiche Beiträge
    18. 02. 2004, 09:24

  • 0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    23. 02. 2004, 15:21

    Habe das so gemacht wie beschrieben. Allerdings ohne die Checkboxen im Backend, sondern nur über das Code-Feld. Wenn du magst, kann ich dir meine Extension zuschicken. Habe sie nicht online gestellt, da sie mir zu lapidar vorkommt. Wenn du sie also brauchst, schick mir deine E-Mail-Adresse per PM und ich lass sie dir zukommen.

    Viele Grüße,
    Olli

  • 0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    06. 03. 2005, 01:03

    Gibt es mittlerweile eine saubere Lösung für dieses Problem?
    Würde mich brennend interessieren

  • 0 x
    26 Beiträge
    0 Hilfreiche Beiträge
    06. 03. 2005, 02:00

    Hallo, ich habe es jetzt etwas "unsauber" gelöst, indem ich direkt im Extension-Code einfach nur 3 ganz simple Änderungen gemacht habe...wie gesagt, man muss eine PHP-Datei der Extension New Login Box (newloginbox/pi1/class.tx_newloginbox_pi1.php) editieren.

    Die Suche nach dem Stichwort _STORAGE_PID ergibt 3 Treffer, genaue an diesen Stellen muss geändert werden:

    1. Treffer Originalcode:
    [code:1:f40f55e391]$query="SELECT username,password FROM fe_users WHERE email='".addslashes(trim($this->piVars['DATA']['forgot_email']))."'
    AND pid IN(".intval($d['_STORAGE_PID']).", 220)".
    $this->cObj->enableFields('fe_users');[/code:1:f40f55e391]
    hier lediglich den AND-Teil erweitern:
    [code:1:f40f55e391]AND pid IN(".intval($d['_STORAGE_PID']).", 220)".[/code:1:f40f55e391] also nicht mehr nur eine pid abfragen, sondern mit dem IN () kann eine Liste angegeben werden, bei mir habe ich etwa die 220 ergänzt.

    2. Treffer Originalcode:
    [code:1:f40f55e391]<input type="hidden" name="pid" value="'.intval($d['_STORAGE_PID']).'" />[/code:1:f40f55e391]
    Ebenfalls wieder den Einzelwert ergänzen durch eine Liste:
    [code:1:f40f55e391]<input type="hidden" name="pid" value="'.intval($d['_STORAGE_PID']).', 220" />[/code:1:f40f55e391] in meinem Fall wieder mit Komma getrennt die 220 drangehangen

    3. Treffer = 2. Treffer

    Somit habe ich erreicht, das die New Lgin Box einmal die User aus meinem unter "Allgemeine Datensatzsammlung" definiertem Ordner mit der uid 210 beim Login berücksichtigt UND gleichzeitig die User aus dem Ordner mit der uid 220.

    Gibt es schönere Lösungen?
    Man könnte doch sicher auch die Flexform der Extension erweitern und dann dort einfach eine Liste von Storage Foldern einrichten? Wäre wohl die schönste Lösung.

    Solange muss die Krücke helfen

  • 1