如何在meteor上创建条件,将admin角色分配给新用户
How to create a condition to assign admin role to a new user on meteor?
我选择meteor。我创建了一个简单的应用程序,并添加了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代码中放置用户角色有疑问。
BTW:所有这些代码是在我的CLIENT/views/admin文件夹。它在他们应该在的地方吗?
谢谢。
查看官方文档:http://docs.meteor.com/#/full/accounts_passwords
在createUser函数调用中放置一个回调函数。您在客户端上的代码很好,因为它还在成功创建帐户时直接登录用户。然后,您可以使用currentUser的概要文件属性来设置您自己的自定义角色。在本例中,检查alanning:roles如何定义这些。
你可以创建一个if语句来检查你的复选框的值,如果被选中,像这样设置角色,例如,如果你将使用常规配置文件来设置角色。
currentUser.profile。角色= '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');
}
更多示例和文档:https://github.com/alanning/meteor-roles
我们需要找出是否选中按钮检索true/false值从复选框
我没有测试这些,但尝试把log如果变量X,如果有任何值。如果为true或check,它可以创建Admin,但如果为false,它可以创建Normal UserTemplate.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');
}
});
注意:我没有测试这些代码,但我想我可以帮助你。
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 在循环中分配json值时,值被覆盖
- 动态分配GA增强型电子商务跟踪器
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 如何在jQuery中将函数的输出分配给变量
- 为集合分配大量的模型弹药
- onclick函数需要双击,因为类分配延迟
- Javascript 将变量分配给警报
- 将节点数据分配给另一个变量jstree
- 逃脱了单一角色的介绍人,而不是实际角色
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript变量分配-按类别
- 如何将内容分配给元素
- 为变量分配多个nodejs导出返回值时出现问题
- 如何为Meteor应用程序中的第一个用户分配特定角色
- 意思是.js AngularJS 菜单服务为页面分配角色
- Meteor(0.9.0.1):使用角色包分配管理员角色的问题
- 如何在meteor上创建条件,将admin角色分配给新用户
- 动态分配数据角色属性
- 获取所有没有分配角色的用户