Aktualisierung der Benutzerränge klappt erst beim zweiten mal

  • In einer Funktion füge ich einen Benutzer einer neuen Benutzergruppe hinzu und lösche ihn aus einer anderen:

    Danach ist der Benutzer in den korrekten Benutzergruppen. Jedoch wird der Benutzerrang nicht aktualisiert. Ich habe nun die Funktion mit dem reset des UserStorageHandler erweitert. So wird der Benutzerrang zwar noch immer nicht beim ersten Aufruf aktualisiert, aber dafür beim zweiten Aufruf.


    Daher habe ich etwas die Vermutung das ich hier ggf. einen Cache übersehe?

  • War das nicht schon öfter Thema, dass entweder der Rang erst mit der nächsten Anmeldung des Benutzers oder durch die entsprechende Anzeigenaktualisierung im ACP angepasst wird?





    Gruß norse

    Zugang zu meinen Arbeiten und dem dazugehörigen Support bekommt Ihr bei Interesse hier.

  • War das nicht schon öfter Thema, dass entweder der Rang erst mit der nächsten Anmeldung des Benutzers oder durch die entsprechende Anzeigenaktualisierung im ACP angepasst wird?

    Ist möglich. Wobe ich es mit einem An-/Abmelden gerade nochmals versucht habe.


    Die Anzeige zu aktualisieren bringt hier keinen Erfolg. Daher denke ich das der Fehler wo anders liegt

  • Die Anzeige zu aktualisieren bringt hier keinen Erfolg

    Ist in dem Fall auch nicht nötig (und müsste man dann ja jedes Mal manuell machen, was keinen Sinn macht).


    Hast Du es mal nach einigen Minuten getestet, wenn ggf. noch Cronjobs durchgelaufen sind?

    Ich nutze selber ein Plugin für automatisierte Gruppen-Zuordnungen und dort wird auch automatisch nach wenigen Minuten der Rang aktualisiert.

    Natürlich müssen die Ränge entsprechend konfiguriert sein, damit sie passend zur Gruppe greifen. Heißt, es muss auch die Priorisierung stimmen. Ist diese nicht hoch genug für den Zweck gewählt, greift u.U. der Rang einer anderen Gruppe.

    Hast Du das mal geprüft?


    PS: Nach Änderungen an den Rängen (oder Gruppen-Prio) aber trotzdem mal die Benutzer-Anzeigen aktualisieren, damit es wieder passt. Zur Sicherheit ggf. auch noch den Cache leeren.

    Gruß

    Jörg

    (Jaydee)

  • Danke. Aber wie bereits geschrieben werden sie erst nach dem zweiten durchlauf aktualisiert. Weder das leeren des Caches im ACP, das aktualisieren der Anzeige noch das ausführen aller Cronjobs (wobei ich hier keine relevanten gesehen hätte für meinen Anwendungsfall) haben mich zum Ziel geführt.


    Die Benutzerränge sind entsprechend den Prioritäten gesetzt. Es funktioniert auch wenn ich den Benutzer von Hand in die entsprechende Gruppe lege oder entferne. Daher auch meine Vermutung. Ich bin aktuell noch an den einzelnen Schritten am durchgehen was alles durchlaufen wird wenn man den Benutzer bearbeitet. Mal sehen ob ich dort was finde

  • Du kannst ja testweise mal das Plugin "Automatische Benutzergruppen-Entfernung" installieren. Damit klappt es auf jeden Fall klaglos und die (umgekehrte) Zuordnung ist ja ohnehin Bestandteil der Software.


    Einen eigenen Cronjob dafür kenne ich auch nicht, eigentlich ist das mit den Cronjobs der jeweiligen Funktion (auch das Plugin hat einen eigenen) abgedeckt.

    Sobald der gelaufen ist (oder manuell angestoßen wurde), passt auch der neue Rang wieder. Weitere Maßnahmen sind da eigentlich nicht erforderlich, zumindest bei uns nicht.

    Gruß

    Jörg

    (Jaydee)

  • So ich bin nun noch die UserAction von WoltLab durchgegangen.


    Es reicht nur mit addToGroups und removeFromGroups zu arbeiten. Das leeren des Cache ist nicht nötig da dies bereits in den Funktionen geleert wird.


    Das Problem das es nicht funktioniert hat war das ich im Frontend war und der Auslösende Benutzer war. So war nach dem Ausführen der Funktion der Cache korrekt, da ich aber nachher im Frontend die Anzeige vom alten Rang gem. WCF::getUser() hatte wurde der Cache wieder "zurück geschrieben". Wenn die Funktion normal im Cronjob oder dann in einer Action ausgeführt wird klappt alles. Hat sich somit erledigt. Danke an alle

    • Official Post

    Hallo,

    Das Problem das es nicht funktioniert hat war das ich im Frontend war und der Auslösende Benutzer war. So war nach dem Ausführen der Funktion der Cache korrekt, da ich aber nachher im Frontend die Anzeige vom alten Rang gem. WCF::getUser() hatte wurde der Cache wieder "zurück geschrieben".

    das wäre dann aber vermutlich ein Bug. Kannst du das mit einem möglichst simplen Reproducer noch einmal in den Fehlerbereichen melden?