流量路由器和过滤角色-Meteor

流量路由器和过滤角色-Meteor,meteor,roles,flow-router,Meteor,Roles,Flow Router,我现在正在处理一个问题超过10天了,我不知道该怎么办,所以我希望我能在这里得到我的解决方案 我有两个角色“admin”和“user”:由于alanning:roles包,第一个用户被添加为admin。但是,问题是我不确定是否将“用户”角色设置为默认角色 下图显示createUser函数的代码 Client//Account//Account.js Template.signup.events({ 'submit form': function(event) { event.preve

我现在正在处理一个问题超过10天了,我不知道该怎么办,所以我希望我能在这里得到我的解决方案

我有两个角色“admin”和“user”:由于alanning:roles包,第一个用户被添加为admin。但是,问题是我不确定是否将“用户”角色设置为默认角色

下图显示createUser函数的代码

Client//Account//Account.js

Template.signup.events({
  'submit form': function(event) {
    event.preventDefault();
    var nameVar =  event.target.signupName.value;
    var emailVar = event.target.signupEmail.value;
    var passwordVar = event.target.signupPassword.value;

    Accounts.createUser({
      name: nameVar,
      email: emailVar,
      password: passwordVar,
      profile: {
        roles: ["user"]
      } 

     });
  }
});
if (Meteor.user().roles = 'admin'){
  FlowRouter.go('dashboard');
}

else if (Meteor.user().roles = 'user'){
    FlowRouter.go('account');
}
下面的代码是Accounts.onLogin函数:

客户端//Lib//routes.js

Template.signup.events({
  'submit form': function(event) {
    event.preventDefault();
    var nameVar =  event.target.signupName.value;
    var emailVar = event.target.signupEmail.value;
    var passwordVar = event.target.signupPassword.value;

    Accounts.createUser({
      name: nameVar,
      email: emailVar,
      password: passwordVar,
      profile: {
        roles: ["user"]
      } 

     });
  }
});
if (Meteor.user().roles = 'admin'){
  FlowRouter.go('dashboard');
}

else if (Meteor.user().roles = 'user'){
    FlowRouter.go('account');
}
我希望你明白我的问题是什么,我期待着解决办法。总之,我需要有“admin”和“user”角色,当它是admin时,应该转到/admin仪表板路径,如果是user,应该转到/account路径

谢谢大家:问题在这里:

if (Meteor.user().roles = 'admin'){ // assigning, not equality check
  FlowRouter.go('dashboard');
}

else if (Meteor.user().roles = 'user'){
    FlowRouter.go('account');
}
但是
roles
字段是一个数组,因此请执行以下操作:

if (Meteor.user().roles.indexOf('admin') !== -1){
  FlowRouter.go('dashboard');
}

else if (Meteor.user().roles.indexOf('user') !== -1){
    FlowRouter.go('account');
}
问题在于:

if (Meteor.user().roles = 'admin'){ // assigning, not equality check
  FlowRouter.go('dashboard');
}

else if (Meteor.user().roles = 'user'){
    FlowRouter.go('account');
}
但是
roles
字段是一个数组,因此请执行以下操作:

if (Meteor.user().roles.indexOf('admin') !== -1){
  FlowRouter.go('dashboard');
}

else if (Meteor.user().roles.indexOf('user') !== -1){
    FlowRouter.go('account');
}

现在,我的“管理仪表板”路线运行良好,谢谢你:D然而,“用户”角色部分不起作用,因为我没有将其设置为默认值。我尝试了以下方法:函数myCreateUser(email,password,name){var id,defaultRoles=['default',user'];id=Accounts.createUser({email:email,password:password,});Roles.addUsersToRoles(id,defaultRoles);}但当我在客户端站点上调用此方法时,它好像不存在。而不是直接检查,考虑使用方法。如果没有默认角色,只需添加
else
block和
FlowRouter.go('somewhere')
。现在我的“管理仪表板”路线运行良好,谢谢:D但是,“用户”角色部分不起作用,因为我没有将其设置为默认。我尝试了以下方法:函数myCreateUser(email,password,name){var id,defaultRoles=['default',user'];id=Accounts.createUser({email:email,password:password,});Roles.addUsersToRoles(id,defaultRoles);}但当我在客户端站点上调用此方法时,它好像不存在。而不是直接检查,考虑使用方法。如果没有默认角色,只需添加
else
block和
FlowRouter.go('somewhere')