Die Funktion Accounts.sendEnrollmentEmail(userId, email)
generiert ein zufälliges Token und speichert es im Feld services.password.reset.token
des Benutzers.
Der Code, der das Token erzeugt ist:
var token = Random.secret();
var when = new Date();
var tokenRecord = {
token: token,
email: email,
when: when
};
Meteor.users.update(userId, {$set: {
"services.password.reset": tokenRecord
}});
(Sie den Quellcode der Funktion anzeigen können here).
Es sendet dann eine E-Mail an den Benutzer mit dem Email
Paket. Wenn Sie einen anderen Dienst verwenden mögen die E-Mail zu schicken, haben Sie grundsätzlich zwei Möglichkeiten:
- Verwenden Sie die gleiche Konvention selbst (das heißt, den gleichen Datensatz erstellen und Ihren eigenen E-Mail-Dienst in Ihrer eigenen Funktion verwenden).
- Verwenden Sie die vorhandene Funktion, lassen Sie die E-Mail-Zustellung unbeaufsichtigt ablaufen, und fragen Sie dann das Dokument des Benutzers nach dem Token ab und senden Sie die E-Mail selbst.
Keine ist eine besonders gute Option, aber beide werden vorerst funktionieren. Ich wünschte, sie hätten diesen Teil in seine eigene Funktion umgewandelt.
Beachten Sie, dass die Kontenpakete einige Änderungen in Bezug auf die Veröffentlichung der nächsten Meteor-Versionen erfahren werden.
BTW, diese Funktion ist sehr ähnlich zu Accounts.sendResetPasswordEmail
, die Sie möglicherweise auch überschreiben oder Ihre eigene Version erstellen möchten.
Oh Mann danke ein Haufen für die Klärung dieses zu mir! Habe das ganze Wochenende damit verbracht, meinen Kopf dazu zu bringen! – klanc
Ich bin froh, dass ich geholfen habe. Es gibt nichts Besseres als einen Blick auf den Quellcode und Tests, um die Interna besser zu verstehen. – MasterAM