Frage

Ich verwende Active Informationen über die Nutzer zu erhalten. Die User-Klasse hat die erwartete Last (), insert (), update () und löschen () Methoden, Einrichter, Getter, und ein paar andere. Aber ich habe Probleme zu entscheiden, ob bestimmte andere Methoden sollten in der Benutzerklasse enthalten sein oder behandelt durch Mitarbeiter.

Hier ist ein Beispiel:

Es gibt mehrere Transaktionen, die ein Benutzer möglicherweise verlangen, dass Bestätigung. Dies wird in einer herkömmlichen Art und Weise behandelt - eine E-Mail an den Benutzer mit einem Link zu senden; Klicken auf den Link bestätigt, dass der Benutzer in der Tat die Transaktion fortfahren will. Ein Hash-Wert des Verifikationsschlüssels und es ist das Ablaufdatum / Zeit bestehen bleibt als Teil des Benutzerdatensatzes.

Wo soll ich die Linie in diesem Prozess ziehen? Sollte einen Mitarbeiter sein, die Überprüfung behandelt (zum Beispiel durch den Klartext-Verifizierungsschlüssel aus dem Query-String zu nehmen und ein User-Objekt als param akzeptieren)? Oder sollte dies durch die User-Klasse behandelt intern (vorbei an den Klartextverifikationsschlüssel in einem Methodenaufruf)?

Die sehr nächste Sache, die nach Überprüfung, natürlich passieren würde, ist, dass die Transaktion fortfahren würde ein Update des aktiven Datensatzes erforderlich ist -. Und da scheint es mir, die User-Klasse muss die Verantwortung haben

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Sie sollten diese Aufgabe an einen Mitarbeiter delegieren, die eine confirmations Tabelle verwaltet.

Sie würden das Confirmation Modell verwenden, um alle Bestätigungsanforderungen zu verfolgen. Das Modell wird gehören User, sowie die Bestätigung Hash-Verwaltung und die Aktion-zu-sein-bestätigt (z activate_account, change_password oder change_email usw.).

Die Confirmation Controller würde zur Validierung der Bestätigung Hash und Verkettungs die entsprechende Aktion auf dem entsprechenden Modell verantwortlich sein (zB activate_account -> user.activate(), change_password -> user.setPassword() etc.) und die Confirmation aus der confirmations Tabelle nach dem erfolgreichen Abschluss entfernen <. / p>

Dies wird für eine bessere Trennung der Logik ermöglichen, sowie die Möglichkeit, besser zu skalieren, z.B. mehr als eine ausstehende Bestätigung für einen bestimmten Benutzer zu unterhalten (zB Bestätigung Passwort und Bestätigung zu ändern, etwas anderes zu ändern.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top