如何创建条件以将管理员角色分配给流星上的新用户?

时间:2015-07-31 00:50:25

标签: javascript 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文件夹中。它应该在哪里吗?

谢谢你们。

2 个答案:

答案 0 :(得分:0)

查看官方文档:http://docs.meteor.com/#/full/accounts_passwords

在createUser函数调用中放置一个回调函数。客户端的代码很好,因为它还可以在成功创建帐户时直接登录用户。然后,您可以使用currentUser的profile属性来设置自己的自定义角色。在这种情况下,请检查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');
}

更多示例和文档:https://github.com/alanning/meteor-roles

答案 1 :(得分:0)

我们需要找出选中的按钮是否从复选框中检索true / false值。我没有测试这些但是如果有任何值,则尝试将变量X放入日志。如果为true或检查它可以创建Admin但是false它可以创建普通用户
    {{1}}

注意:我没有测试过这些代码,但我想我可以帮到你。