我使用這個roles meteor package,我不能讓我的管理面板發行分配管理角色。流星(0.9.0.1):使用角色包
我目前得到的行爲記錄在管理用戶被重定向到主頁,而不是被顯示的管理區。
如果我運行下面的代碼我得到返回「假」,建議用戶不是一個管理員用戶:
Roles.userIsInRole(Meteor.user(), ['admin']);
如果我嘗試在控制檯上添加了角色,我得到這個:
Roles.addUsersToRoles("Nvu2wZRg3K2wd4j4u", ['admin']);
不確定
insert failed: MongoError: E11000 duplicate key error index: meteor.roles.$name_1 dup key: { : "admin" }
update failed: Access denied
Roles.addUsersToRoles("Meteor.user()", ['admin']);
undefined
insert failed: MongoError: E11000 duplicate key error index: meteor.roles.$name_1 dup key: { : "admin" }
這似乎表明,這個用戶已經有角色分配到它。我期望的權限錯誤取決於未發佈的角色。如果有重複的錯誤,那麼看起來這個用戶應該分配給它的管理員角色。
下面是相關的代碼。 模板:
<template name="adminTemplate">
{{#if isAdminUser}}
{{> accountsAdmin}}
{{else}}
Must be admin to see this...
{{/if}}
</template>
<template name="accountsAdmin">
accountsAdmin template
</template>
助手:
Template.adminTemplate.helpers({
// check if user is an admin
isAdminUser: function() {
return Roles.userIsInRole(Meteor.user(), ['admin']);
}
})
我router.js文件
Router.configure({
layoutTemplate: 'layout'
});
Router.map(function() {
this.route('home', {path: '/'});
this.route('about', {path: '/about'});
this.route('faq', {path: '/faq'});
this.route('myaccount', {path: '/myaccount'});
this.route('admin', {
layoutTemplate: 'adminlayout',
path:'/admin',
template: 'accountsAdmin',
onBeforeAction: function() {
if (Meteor.loggingIn()) {
this.render(this.loadingTemplate);
} else if(!Roles.userIsInRole(Meteor.user(), ['admin'])) {
console.log('redirecting');
this.redirect('/');
}
}
});
});
我有我的startup.js
Meteor.startup(function() {
// This is temporary
if (Meteor.users.findOne("Nvu2wZRg3K2wd4j4u"))
Roles.addUsersToRoles("Nvu2wZRg3K2wd4j4u", ['admin']);
});
以下任一有人對此有任何想法NE?
這非常謝謝:)我只需要改變「用戶名」在insertUsers功能「電子郵件」。現在工作:) – user1532669 2014-09-02 15:30:36