Tob*_*old 8 user-accounts meteor
使用Meteor帐户(和accounts-ui)是否有一种简单的方法来仅提出新的用户注册邀请?例如,通过提供邀请链接或邀请代码.
我在Meteor文档中找到的唯一相关内容是Meteor.sendEnrollmentEmail,但它并没有解决我的问题.
nat*_*n-m 17
您可以使用内置程序包执行此操作,但我发现滚动简单实现更简单,更强大.
你需要:
UserInvitations包含邀请以成为用户.UserInvitations/插入一些的UImeteor mongo使用iron-router或类似创建路线,例如:
Router.map ->
@route 'register',
path: '/register/:invitationId'
template: 'userRegistration'
data: ->
return {
invitationId: @params.invitationId
}
onBeforeAction: ->
if Meteor.userId()?
Router.go('home')
return
Run Code Online (Sandbox Code Playgroud)userRegistration提交表单时- 调用
Accounts.createUser({invitationId: Template.instance().data.invitationId /*,.. other fields */})
Run Code Online (Sandbox Code Playgroud)在服务器上,创建一个Accounts.onCreateUser钩子以将invitationIdfrom选项传递给用户
Accounts.onCreateUser(function(options, user){
user.invitationId = options.invitationId
return user;
});
Run Code Online (Sandbox Code Playgroud)此外,在服务器上创建一个Accounts.validateNewUser钩子来检查invitationId并标记使用的邀请
Accounts.validateNewUser(function(user){
check(user.invitationId, String);
// validate invitation
invitation = UserInvitations.findOne({_id: user.invitationId, used: false});
if (!invitation){
throw new Meteor.Error(403, "Please provide a valid invitation");
}
// prevent the token being re-used.
UserInvitations.update({_id: user.invitationId, used: false}, {$set: {used: true}});
return true
});
Run Code Online (Sandbox Code Playgroud)现在,只有具有有效未使用的用户invitationId才能注册.
编辑:2014年10月 - 更新为使用meteor 0.9.x API
| 归档时间: |
|
| 查看次数: |
2951 次 |
| 最近记录: |