Amazon Pay & Login 4 OXID by BESTIT - Problem mit Kundendaten


#1

Hallo zusammen,

zur Info für alle, die es eventuell betrifft:

wir haben in einem Kundenprojekt, oxid ce 4.8., das bestit amazon pay & login Modul im Einsatz und folgenden (wahrscheinlichen) Bug oder Design-Fehler gefunden:

Wenn ein Kundendatensatz in der oxuser-Tabelle vorhanden ist, allerdings kein Passwort hat - also NL Anmeldung, Gastbestellung mit Zahlungsart != amazon payments - und dieser Kunde sich anschließend irgendwann mittels amazon login im Shop einloggt, dann wird, falls seine bereits in oxuser.oxusername hinterlegte Mail der Amazon-Mail entspricht, der alte Datensatz im oxid gelöscht und ein neuer erstellt.

Dies ist ein massives Problem, da bei Bestellungen die oxorder.oxuserid somit auf einen nicht existierenden oxuser Datensatz verweist. Insbesondere im Zusammenhang mit weiteren Modulen/Workflows, die ebenfalls ausgehend vom oxorder.oxuserid Eintrag einen Kunden referenzieren möchten.

Der Fehler ist in der Klasse bestitAmazonPay4Oxid_oxcmp_user in der Funktion amazonLogin() in der Prüfung der Rückgabe von OxidUserExists(). Hier wird nur anhand des (nicht)gesetzten Passwort-Feldes unterschieden. Der Fehler lässt sich einfach korrigieren, allerdings wäre es wünschenswert, wenn bestit hier nachzieht.
Wahrscheinlich wäre es ideal, einen solchen Datensatz dann zu aktualisieren, damit die Konsistenz oxorder.oxuserid=oxuser.oxid gewährleistet wird.
Ein Update der oxorder.oxuserid auf die neu vergebene oxuser.oxid wäre ebenfalls denkbar, allerdings wird die alte oxuser.oxid eventuell an weiteren Stellen (diverse Module/Workflows) referenziert.

Viele Grüße
Stephan


#2

Danke für die Infos. Hast du das an BESTIT zurück gemeldet?


#3

Hallo,
klar, habe ich sofort gemacht.
vG
S.


#4

Hallo,

Ihre Beobachtung ist korrekt. Als Lösung könnte man den User einfach updaten, was jedoch zur Folge hat, dass der User alle Gastbestellungen “übernehmen” würde. Wenn jetzt ein Gastbesteller, jedoch eine falsche E-Mail bei seiner Bestellung angegeben hat, welche zufälligerweise der des Amazonkontos entspricht ([email protected] statt [email protected]), würden wir die Daten einer dritten Person dem Amazon User zuweisen. Somit hätte eine Nutzer Zugriff auf Daten auf welche er keinen Zugriff bekommen darf. Desweiteren wollte ein Gastbesteller ja gar nicht das seine Daten im Shop, außer zwecks seiner Bestellung, gespeichert werden. Auch werden Bestelldaten von OXID nach der Order vollständig inkl. Nutzerdaten persistiert, so dass ein Kundenkonto gelöscht werden kann ohne das die Daten, welche relevant für die Bestellung sind, gelöscht werden. Auch kommt hinzu das die E-Mail Adresse eine primary Key ist so das wir nicht einfach einen neuen Nutzer anlegen können, da die E-Mail Adresse ja schon vergeben ist. Ggf. haben Sie oder jemand anders aus der Community ja noch einen anderen Vorschlag. Wenn ja lassen Sie uns von diesem wissen und wir werden uns diesen anschauen.

Viele Grüße,
Alexander Schneider