问题描述
所以我在玩流星。 我创建了一个简单的应用程序,并添加了alanning:roles程序包,使其能够具有不同的用户角色。
我在管理环境中拥有此页面来创建新用户,并且我想添加一个复选框以在创建之前将用户角色分配给该用户。 模板html(create-user.html)如下所示:
<template name="AdminCreateUser">
<body>
{{> _adminNav }}
<section class="container main">
<h1>Hmmm...trying to create a user?</h1>
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="registerEmail" placeholder="Email">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="registerPassword" placeholder="Password">
</div>
<div class="checkbox">
<label>
<input type="checkbox" {{checked}} class="toggle-checked"> This is an admin
</label>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</section>
</body>
</template>
页面JS(create-user.js)如下所示:
Template.AdminCreateUser.events({
'submit form': function(event) {
event.preventDefault();
var emailVar = event.target.registerEmail.value;
var passwordVar = event.target.registerPassword.value;
Accounts.createUser({
email: emailVar,
password: passwordVar
});
}
});
如何使此复选框更改要创建的用户的用户角色? 我正在考虑制作IF语句以检查是否已检查。 但是我对如何/在何处创建该if语句以及在JS代码中将用户角色放置在何处感到怀疑。
顺便说一句:所有这些代码都在我的CLIENT / views / admin文件夹中。 他们应该在那里吗?
多谢你们。
1楼
Sceptic
0
2015-07-31 04:08:17
在此处查看官方文档: :
在您的createUser函数调用中放置一个回调。 您在客户端上的代码很好,因为它也可以在成功创建帐户后直接将用户登录。 然后,您可以使用currentUser的配置文件属性来设置自己的自定义角色。 在这种情况下,请检查alanning:roles如何定义它们。
您可以创建一个if语句来检查您的复选框的值,如果选中则设置角色,例如,如果您要使用常规配置文件设置角色。
currentUser.profile.role ='admin';
我看了一下,发现使用您的包可以在成功的createUser调用之后进行此函数调用:
if(user.roles.length > 0){
// Need _id of existing user record so this call must come
// after `Accounts.createUser` or `Accounts.onCreate`
Roles.addUsersToRoles(id, user.roles, 'default-group');
}
更多示例和文档: :
2楼
Francis Al Victoriano
0
2016-08-12 03:07:23
我们需要找出选中的按钮是否从复选框中获取了true / false值
我没有测试这些,但是如果有任何值,请尝试将变量X放入日志。
如果为true或选中它可以创建Admin但为false则可以创建Normal User
Template.AdminCreateUser.events({ 'submit form': function(event) { event.preventDefault(); var emailVar = event.target.registerEmail.value; var passwordVar = event.target.registerPassword.value; var x = $(event.target).is(":checked").val(); if(x){ id = Accounts.createUser({ email: emailVar, password: passwordVar }); Roles.addUsersToRoles(id, ['admin'], 'default-group'); }else{ id = Accounts.createUser({ email: emailVar, password: passwordVar }); Roles.addUsersToRoles(id, ['user'], 'default-group'); } });
注意:我没有测试这些代码,但我想我可以为您提供帮助。