2016-09-26 25 views
0

我們正在使用流星[email protected]並添加alanning:roles管理角色。 下面我們用於應用角色的代碼。流星角色不按預期工作,它返回假

Accounts.onCreateUser(function(options, user) { 
    console.log("on account create"); 
    Roles.addUsersToRoles(user._id,'admin') 
    console.log(Roles.userIsInRole(Meteor.userId(),'admin')); 
    return user; 
}); 

Roles.userIsInRole(Meteor.userId(),'admin') return false 

幫助我們怎麼了。

+0

這可能只是一個計時問題 - 請記住,對addUsersToRoles的調用會對數據庫進行更新,這不是即時的。如果您手動檢查數據庫,是否已完成添加角色的工作? – Mikkel

+0

@邁克金 - 我一直試圖從控制檯檢查Roles.userIsInRole(Meteor.userId(),'admin')的狀態,但它alwase返回false,我也檢查角色訂閱並返回所有可用角色 – jayesh

回答

1

alanning-roles,您不需要將其包含到Accounts.onCreateUser中。

插入新文檔後,您只需要使用Roles.addUserToRoles()。像這樣:根據他們的README.md

const id = Accounts.createUser({ email: user.email, password: "apple1", profile: { name: user.name } }); Roles.addUsersToRoles(id,'whateverRole')

注意,Roles.addUsersToRoles調用需求來Accounts.createUser或Accounts.onCreate否則角色包不會被後能夠找到用戶記錄(因爲它還沒有被創建)。

+0

你有沒有使用[email protected]進行測試 – jayesh

+0

是的,它的工作正常。 – ickyrr

+0

感謝您的發現我發現問題流星帳戶開始使用登錄和註冊與包帳戶密碼,但角色必須要求帳戶基礎包。 – jayesh