创建 Stormpath 用户并在一次调用中分配给组
Create Stormpath user and assign to group in one call
我想向组提交用户创建请求,但不确定如何在 express-stormpath 中执行此操作。
现在我使用预注册和 post 注册处理程序获取一个字段,将其从 formData 中删除,传递给 res,然后在 post 注册处理程序上设置组:
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();
}
这似乎不是个好主意。如果连接不可用并且组分配失败会怎样?用户可能会在没有组的情况下陷入困境。
另一种方法是将值保存到帐户的自定义数据对象中,然后使用它来创建组。
如果您在 form configuration:
中定义表单字段,则 express-stormpath 会自动将其保存到自定义数据
web: {
register: {
form: {
fields: {
describes: {
enabled: true,
label: 'Position',
name: 'describes',
placeholder: 'e.g. employer, seeker',
required: true,
type: 'text'
}
}
}
}
}
然后,在您的 post-注册处理程序中,检索自定义数据值并使用它来分配组:
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();
}
这样一来,您就可以保证价值得到保存。如果 post- 注册处理程序由于某种原因失败,您可以通过检查帐户的自定义数据资源来了解用户应该属于哪个组。
我想向组提交用户创建请求,但不确定如何在 express-stormpath 中执行此操作。
现在我使用预注册和 post 注册处理程序获取一个字段,将其从 formData 中删除,传递给 res,然后在 post 注册处理程序上设置组:
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();
}
这似乎不是个好主意。如果连接不可用并且组分配失败会怎样?用户可能会在没有组的情况下陷入困境。
另一种方法是将值保存到帐户的自定义数据对象中,然后使用它来创建组。
如果您在 form configuration:
中定义表单字段,则 express-stormpath 会自动将其保存到自定义数据web: {
register: {
form: {
fields: {
describes: {
enabled: true,
label: 'Position',
name: 'describes',
placeholder: 'e.g. employer, seeker',
required: true,
type: 'text'
}
}
}
}
}
然后,在您的 post-注册处理程序中,检索自定义数据值并使用它来分配组:
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();
}
这样一来,您就可以保证价值得到保存。如果 post- 注册处理程序由于某种原因失败,您可以通过检查帐户的自定义数据资源来了解用户应该属于哪个组。