Wie erhalte ich nur eine Einladung?

8

Mit Meteor accounts (und accounts-ui ) gibt es eine einfache Möglichkeit, nur neue Benutzeranmeldungen einzuladen? Zum Beispiel indem Sie einen Einladungslink oder einen Einladungscode angeben.

Das einzige, was ich in der Meteor-Dokumentation finden konnte, ist Meteor.sendEnrollmentEmail , aber es löst mein Problem nicht.

    
Tobold 08.01.2014, 08:37
quelle

3 Antworten

17

Sie können dies mit dem eingebauten Paket tun, aber ich fand es viel einfacher und leistungsfähiger, eine einfache Implementierung zu rollen.

Sie müssen:

  • Erstellen Sie eine Sammlung, zB UserInvitations , um die Einladungen zu einem Benutzer zu enthalten.
  • Erstellen Sie die Benutzeroberfläche für die Erstellung von UserInvitations / fügen Sie etwas mit meteor mongo ein
  • Erstellen Sie mit iron-router oder ähnlich eine Route, zB:

    %Vor%
  • Wenn das Formular in userRegistration übergeben wird, rufen Sie

    auf %Vor%
  • Machen Sie auf dem Server einen Accounts.onCreateUser Hook, um die Optionen invitationId von den Optionen an den Benutzer zu übergeben

    %Vor%
  • Auf dem Server erstellen Sie außerdem einen Accounts.validateNewUser Hook, um die invitationId zu überprüfen und die Einladung als verwendet zu markieren

    %Vor%

Jetzt können nur Benutzer registriert werden, die ein gültiges nicht verwendetes invitationId haben.

EDIT: Okt. 2014 - Aktualisiert, um Meteor 0.9.x API

zu verwenden     
nathan-m 09.01.2014, 00:11
quelle
2

Um es mit dem eingebauten Zeug zu tun, können Sie das vorhandene Accounts.sendEnrollmentEmail zusammenfassen - es ist jedoch ein wenig komplizierter als die andere gegebene Lösung.

Rufen Sie mit dem folgenden Beispielcode die enroll -Methode wie folgt auf:

%Vor%

Meteor wird dann dem Benutzer eine E-Mail senden (Sie können die Vorlage mit Accounts.emailTemplates konfigurieren)

Wenn sie auf den Link klicken, ruft meteor die an Accounts.onEnrollmentLink übergebene Funktion auf - in diesem Fall können Sie sie zu einer Passwort-Einrichtungsseite bringen; aber du musst mit ihrem done Callback herumspielen.

Ändern Sie den folgenden Code, in dem INSERT XXX HERE steht; dann in deinem Code code SomeGlobalEnrollmentObjectThing.cancel() , wenn der Benutzer abbricht, oder SomeGlobalEnrollmentObjectThing.complete(theUsersNewPassword) , wenn er das neue Passwort einreicht.

%Vor%     
nathan-m 29.10.2014 01:47
quelle
2

Ich habe dafür eine spezifische Lösung erstellt, da Sie mit allen anderen Lösungen nur explizit passwortbasiert erstellen können Konten. Das Paket t3db0t:accounts-invite ermöglicht das Erstellen von Konten mit einem beliebigen Dienst nur dann, wenn Sie diese zulassen, z. B. mit einer Route "Einladung annehmen". Live-Demo hier .

    
T3db0t 10.03.2016 19:46
quelle

Tags und Links