-
FrontendUser::save()
Hallo Leute,
kann mir jemand erklären wieso in der FrontendUser.php in der save-Methode die Gruppen zurückgesetzt werden?
Ich authentifiziere meine Nutzer nutzer per Hook importUser und checkCredentials über einen MSSQL-Server (Userdatenbank unseres Hauptprogramms befindet sich dort). Klappt auch alles super. Leider werden die Gruppen immer restet wenn ich sie mit dem folgenden Code hinzufüge.
PHP-Code:
$objMemberGroup = MemberGroupModel::findOneBy('asegoGroupUid', $objAsegoUser->BenutzerGruppenUid);
if ( $objMemberGroup !== null )
{
$arrUserGroups = deserialize($objUser->groups, true);
$arrUserGroups[] = $objMemberGroup->id;
// Doppelte Einträge entfernen
$arrUserGroups = array_unique($arrUserGroups);
$objUser->groups = serialize($arrUserGroups);
$objUser->save();
}
Wenn ich die FrondendUser.php wie folgt änder klappt alles:
PHP-Code:
public function save()
{
#$groups = $this->groups;
#$this->arrData['groups'] = $this->arrGroups;
parent::save();
#$this->groups = $groups;
}
Aber wieso werden die Gruppen überhaupt resetet und wie kann ich das Problem Updatesicher lösen?
-
Ich habe es jetzt erstmal im postLogin-Hook so gelöst:
PHP-Code:
$objUser->Database
->prepare("UPDATE tl_member SET groups=? WHERE id=?")
->execute(serialize($arrUserGroups), $objUser->id);
Trotzdem erklärt es nicht wieso man im FrondendUser mit save() keine Gruppen überschreiben kann.
-
Weil du auf dem MemberModel (= Datenbank) arbeitest. Der FrontendUser ist aber bereits geladen und bleibt wie er ist. Den müsstest du refreshen.
-
Ich hab es ja über den anderen Hook gelöst, die Frage bleibt wieso in diesem Model die save-Methode überschrieben wurde, damit Gruppen nicht geändert werden können wenn dieser User geladen ist. Die Gruppen können niemals mit der save-Methode geändert werden. Man kann allerdings detachen, query drüber bügeln und erneut laden.
Gesendet von einer ollen Touchscreen-Tastatur. Fehler sind bedingt durch meine dicken Finger.