2016-05-03 8 views
4

Ich möchte die Benutzererstellungsanforderung mit der Gruppe senden, aber nicht sicher, wie das in Express-Stormpath zu tun.Stormpath-Benutzer erstellen und der Gruppe in einem Anruf zuweisen

Im Moment habe ich den Pre- und Post-Registrierung Handler verwenden, um ein Feld zu erhalten, löschen Sie es von Formulardaten, auf res passieren, stellen Sie dann die Gruppe auf der Post Registrierung Handler:

preRegistrationHandler: function (formData, req, res, next) { 
    res.locals.describes = formData.describes; 
    delete formData.describes; 

    next(); 
}, 

postRegistrationHandler: function (account, req, res, next) { 
    var seekerHref = config.SEEKERS_HREF; 
    var employerHref = config.EMPLOYERS_HREF; 

    if (res.locals.describes === "seeker") { 
     //Adding to seeker group 
     account.addToGroup(seekerHref, function(err, membership) { 
      console.log(membership); 
     }); 
    } else if (res.locals.describes === "employers") { 
     //Adding to the employer group 
     account.addToGroup(employerHref, function(err, membership) { 
      console.log(membership); 
     }); 
    } 
    delete res.locals.describes; 

    next(); 
} 

Diese doesn‘ Es scheint mir eine gute Idee zu sein. Was passiert, wenn die Verbindung nicht verfügbar ist und die Gruppenzuordnung fehlschlägt? Der Benutzer könnte in einem Schwebezustand ohne eine Gruppe stecken bleiben.

Antwort

8

Alternativ können Sie den Wert im benutzerdefinierten Datenobjekt des Kontos speichern und anschließend zum Erstellen der Gruppe verwenden.

Express-stormpath ein Formularfeld für benutzerdefinierte Daten speichert automatisch, wenn Sie es in den form configuration definieren:

web: { 
    register: { 
    form: { 
     fields: { 
     describes: { 
      enabled: true, 
      label: 'Position', 
      name: 'describes', 
      placeholder: 'e.g. employer, seeker', 
      required: true, 
      type: 'text' 
     } 
     } 
    } 
    } 
} 

Dann in Ihrer Post Registrierung Handler, rufen Sie den Custom Data Wert und verwenden Sie es zuweisen die Gruppe:

postRegistrationHandler: function (account, req, res, next) { 
    var seekerHref = config.SEEKERS_HREF; 
    var employerHref = config.EMPLOYERS_HREF; 

    account.getCustomData(function(err, customData) { 
     if (customData.describes === "seeker") { 
      //Adding to seeker group 
      account.addToGroup(seekerHref, function(err, membership) { 
       console.log(membership); 
      }); 
     } else if (customData.describes === "employers") { 
      //Adding to the employer group 
      account.addToGroup(employerHref, function(err, membership) { 
       console.log(membership); 
      }); 
     } 

     customData.remove('describes'); 
     customData.save(function(err) { 
      if (err) throw err; 
     }); 
    }); 

    next(); 
} 

Auf diese Weise wird garantiert, dass der Wert gespeichert wird. Wenn der Nach-Registrierungshandler aus irgendeinem Grund fehlschlägt, können Sie sehen, in welcher Gruppe der Benutzer sein sollte, indem Sie die benutzerdefinierte Datenquelle des Kontos untersuchen.

+0

Ich hatte darüber nachgedacht, und ich werde jetzt. Ich denke, ich kann auch den Post-Login-Handler überprüfen und wenn der Benutzer zu diesem Zeitpunkt keine Gruppe hat, kann ich ihn erneut einstellen und wenn das fehlschlägt, logge ihn und logge ihn aus und leite ihn auf eine Seite um uns zu kontaktieren. Danke Nate. –

+5

Ich habe auch gerade gemerkt, dass du bei Stormpath arbeitest - das sind großartige Software-Leute, du hast die eine Sache genommen, die ich hasse und es so schön gemacht habe. Ich würde vielleicht verlangen, dass wir in Zukunft eine Gruppe bei der Registrierung zuweisen können, ähnlich wie wenn Sie das Konto in der Stormpath-Konsole erstellen. –

+0

Wir <3 Kunden-Feedback @ Stormpath. Wenn Sie Ideen vorschlagen möchten, Stormpath hat ein Feature Verbesserung Portal hier: ideas.stormpath.com –

Verwandte Themen