Seite 1 von 1

User per php Script zu einer Benutzergruppe hinzufügen

Verfasst: 02.09.2008 00:31
von Bronco
Hallo liebes phpbb Team,

ich habe bei meinem Forum ein kleines Script geschrieben welches User nach einem externen Aufruf ( von einem Biller) zu einer Bentutzergruppe hinzufügen soll. Das funktioniert insoweit auch ganz gut. Es wird nach dem Aufruf auch die Gruppe in der Tabelle user_groups eingetragen und es wird auch sein Status als Gruppenmitglied in der jeweiligen Gruppe geführt. Allerdings hat er dennoch nicht die Rechte die er haben sollte um die Beiträge lesen zu können. Habt ihr eine Idee wo der Fehler liegen könnte? Muss die Sitzung erst geschlossen werden oder muss ich einen weiteren Eintrag in einer anderen Tabelle vornehmen? Sollte etwas noch unklar sein von meiner Beschreibung her bitte postet eure Fragen. Werde Sie dann so gut es geht ergänzen. Dieses Problem ist echt nervig, da ich jeden User erst aus der Gruppe per Hand entfernen muss um ihn dann erneut per Hand hinzuzufügen. Danke für eure Tipps. Ich hoffe ich hab im richtigen Bereich gepostet.

Thx Bronco

Verfasst: 02.09.2008 00:43
von Metzle
Hallo,

ich hab das mal hierher geschoben, da das doch eher in den Modbereich gehört bzw in die Entwicklung einer Mod.

Also nun aber zum Thema:

Ich vermute, dass du noch den Wert group_id in der Tabelle _users ändern lassen musst. Ich glaube, dieser Wert gibt die Hauptgruppe an, die der User hat und somit ja auch die Rechte, die der Benutzer hat.

Wie aber geschrieben, ich vermute das nur ;) Kannst ja mal nachschauen in der DB, ob da was nicht passt, wenn du per Skript einen User verschiebst.

Verfasst: 02.09.2008 05:30
von gn#36
Das reicht nicht. Die Rechte des Users werden aus Gründen der Performance in der Usertabelle zwischengespeichert im Feld user_permissions. Ist das Feld leer wird es neu angelegt, basierend auf den Gruppen und anderweitig angelegten Rechen die der User in der Datenbank stehen hat. Wenn du dieses Feld leerst sollten die neuen Berechtigungen bei der nächsten Anmeldung berechnet werden und dann übernommen werden.

Ansonsten müsstest du auch noch viel einfacher die Auth Klasse verwenden können, um die Berechtigungen direkt neu zu berechnen:

Code: Alles auswählen

$auth->acl_cache($user->data);
$user->data solltest du durch das entsprechende Array des zu berechnenden Users ersetzen, falls der User nicht eingeloggt ist.

Die Gruppe in der users Tabelle ist die Hauptgruppe des betreffenden Users und hat mit den Rechten nur indirekt etwas zu tun (der User kann z.B. aus dieser Gruppe nicht austreten, somit kann er die damit verbundenen Rechte auch nicht loswerden (z.B. ein "Nie")).

Verfasst: 03.09.2008 04:55
von Bronco
Danek erstmal für eure Tipps habs gerade erst gesehen, das Antworten da sind. Werde euch morgen eine Rückmeldung geben. Thx schonmal! Bronco

Verfasst: 03.09.2008 05:28
von tas2580
Schau dir mal die Funktion group_user_add() an, damit kannst du recht einfach und sauber einen oder mehrere User in eine Gruppe hinzufügen.