MeteorJS用户帐户:核心和流星角色
MeteorJS useraccounts:core and meteor-roles
我正在使用MeteorJS开发简单的Web应用程序。我是MeteorJs的新人。我使用用户帐户:核心包和流星角色。是否可以在注册新用户时为用户分配角色?
编辑 1
我尝试使用onCreateUser钩子,但有些东西不起作用。
Accounts.onCreateUser(function(options, user){
var role = ['unselected'];
Roles.addUsersToRoles(user, role);
return user;
});
以下方法只能在服务器端运行。线索是,您需要首先创建用户,从创建中获取 ID,然后为其附加角色。
Meteor.methods({
rolesCreateUser: function (user) {
if (_.isObject(user)) {
if (user.username) {
var id = Accounts.createUser({
username: user.username,
email: user.email,
password: user.password
});
//We add roles to the user
if (user.roles.length > 0) {
Roles.addUsersToRoles(id, user.roles);
}
_.extend(user, {id: id});
return user;
}
}
}
});
然后在客户端使用用户数据调用该方法:
Meteor.call('rolesCreateUser', newUserData, function (error, newCreatedUser) {
if (error) {
//The error code
} else {
//Do something with newCreatedUser
}
});
我有这种方式来创建用户(如果我理解你的例子,你有一些用户,只需要一些角色,所以与当前用户一起创建这个(,也使用一些自定义的登录按钮或类似的东西
服务器.js
Meteor.methods({
createUsers: function(email,password,roles,name){
var users = [{name:name,email:email,roles:[roles]},
];
.each(users, function (user) {
var id;
id = Accounts.createUser({
email: user.email,
password: password,
profile: { name: user.name }
});
if (user.roles.length > 0) {
Roles.addUsersToRoles(id, user.roles);
}
});
},
deleteUser : function(id){ ///Some Delete Method (ignore if dont needed)
return Meteor.users.remove(id);
},
});
发布方法
//publish roles
Meteor.publish(null, function (){
return Meteor.roles.find({})
})
Meteor.publish("Super-Admin", function () {
var user = Meteor.users.findOne({_id:this.userId});
if (Roles.userIsInRole(user, ["Super-Admin"])) {
return Meteor.users.find({}, {fields: {emails: 1, profile: 1, roles: 1}});
}
this.stop();
return;
});
Meteor.publish("Admin", function () {
var user = Meteor.users.findOne({_id:this.userId});
if (Roles.userIsInRole(user, ["Admin"])) {
return Meteor.users.find({}, {fields: {emails: 1, profile: 1, roles: 1}});
}
this.stop();
return;
});
Meteor.publish(null, function (){
return Meteor.roles.find({})
})
所以在客户端 client/register.html
<template name="register">
<form id="register-form" action="action" >
<input type="email" id="register-email" placeholder="Nombre Nuevo Usuario">
<input type="password" id="register-password" placeholder="Password">
<select id="register-rol" class="form-control">
<option value="Admin" selected>Admin</option>
<option value="Super-Admin" selected>Super Admin</option>
<option value="Normal" selected>Normal</option>
</select>
<input type="submit" value="Register">
</form>
</tempalate>
并在注册时.js调用服务器方法
Template.registrar.events({
'submit #register-form' : function(e, t) {
e.preventDefault();
var email = t.find('#register-email').value,
password = t.find('#register-password').value,
roles = $( "#register-rol" ).val();
Meteor.call("createUsers", email, password,roles);
return false;
},
'click #deleteUser' : function(event,template){
var idUsuario= this._id;
Meteor.call('deleteUser',{_id:idUsuario})
}
});
删除部分(html(这是可选的,看看帐户是否正确创建
{{#each users}}
<li id="user"><h6>{{email}}</h6><h6>{{roles}}</h6></li>
<button id="deleteUser" class="btn btn-danger btn-xs" > Borrar Usuario {{email}} </button>
{{/each}}
客户端/注册列表.js
Template.registrar.helpers({
users: function () {
return Meteor.users.find();
},
email: function () {
return this.emails[0].address;
},
roles: function () {
if (!this.roles) return '<none>';
return this.roles.join(',');
}
});
记住订阅
Meteor.subscribe('Admin');
Meteor.subscribe('Super-Admin');
希望这个帮助对不起混乱的代码
你可能
想使用OnCreateUser钩子:http://docs.meteor.com/#/full/accounts_oncreateuser
相关文章:
- 如何使用铁流星与流星的默认路线
- 在流星上使用微信js-sdk时出现拒绝权限错误
- 流星中DOM的繁殖
- 逃脱了单一角色的介绍人,而不是实际角色
- 保存串行端口列表与流星
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 流路由器流星的历史
- 动态路径用于流星/铁路由器
- 流星的全球可变范围
- 流星收集更新不是在更新文档
- 在流星中react不工作的defaultValue
- 剑道UI不与流星合作
- 将HTML5模板转换为流星.js,关于js init的问题
- 流星:点击激活其他模板
- 使用流星调用时,可以多次访问流星中的某个函数
- 流星蒙戈的返回阵列
- 流星用户帐户和alanning流星角色-登录时检查角色
- MeteorJS用户帐户:核心和流星角色
- 使用流星角色的优缺点是什么?
- 使用流星角色和铁流星限制视图仅在特定条件下有效