User per php Script zu einer Benutzergruppe hinzufügen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Bronco
Mitglied
Beiträge: 4
Registriert: 27.06.2008 16:12

User per php Script zu einer Benutzergruppe hinzufügen

Beitrag 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
Benutzeravatar
Metzle
Ehemaliges Teammitglied
Beiträge: 10435
Registriert: 08.03.2008 02:50
Wohnort: Waiblingen-Neustadt
Kontaktdaten:

Beitrag 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.
Metzle
phpBB.de-Support-Team
Allround-phpBB.de
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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")).
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.
Bronco
Mitglied
Beiträge: 4
Registriert: 27.06.2008 16:12

Beitrag 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
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Beitrag 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.
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“