I'd like to submit the user creation request with the group but not sure how to do that in express-stormpath.
Right now I use the pre- and post-registration handlers to get a field, delete it from formData, pass to res, then set the group on the post registration 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();
}
This doesn't seem like a good idea. What happens if the connection becomes unavailable and the group assignment fails? The user might be stuck in a limbo state without a group.
An alternate way of doing this is to save the value to the account's Custom Data object, and then use that to create the group afterwards.
express-stormpath will save a form field to Custom Data automatically if you define it in the form configuration:
Then, in your post-registration handler, retrieve the Custom Data value and use it to assign the group:
This way, you are guaranteed that the value will be saved. If the post-registration handler fails for some reason, you can see what group the user should be in by examining the account's custom data resource.