簡體   English   中英

流星角色:不能混合使用分組角色和非分組角色

[英]Meteor roles: Can't mix grouped and non-grouped roles

我正在嘗試為用戶更新角色,但是每當我要授予/刪除管理員角色(全局角色)時,它都告訴我不能混合使用。 我不知道如何解決這個問題。

Meteor.users.update(id, {
    $set: {
        'username': username,
        'emails.0.address': email
    }
});

if(Roles.userIsInRole(id, ['mod'])) {
    Roles.removeUsersFromRoles(id, 'mod');
}

if(Roles.userIsInRole(id, ['admin'])) {
    Roles.removeUsersFromRoles(id, 'admin');
}

if(role == 'Moderator') {
    Roles.addUsersToRoles(id, 'mod');
} else if(role == 'Administrator') {
    Roles.addUsersToRoles(id, 'admin');
}

如何解決?

tl; dr

您必須像這樣將角色分配給全局組:

Roles.addUsersToRoles(id, 'admin', Roles.GLOBAL_GROUP);

詳情:

當為用戶分配了具有組和不具有組的角色時,將發生該錯誤。 正如文檔所說:

注意:如果您對任何用戶使用組,則應對所有用戶使用組。 這是由於角色包如何將角色內部存儲在數據庫中。

具體來說(來自文檔):

Roles.addUsersToRoles(bobsUserId, ['manage-team','schedule-game'])
// internal representation - no groups
// user.roles = ['manage-team','schedule-game']

Roles.addUsersToRoles(joesUserId, ['manage-team','schedule-game'], 'manchester-united.com')
Roles.addUsersToRoles(joesUserId, ['player','goalie'], 'real-madrid.com')
// internal representation - groups
// NOTE: MongoDB uses periods to represent hierarchy so periods in group names
//   are converted to underscores.
//
// user.roles = {
//   'manchester-united_com': ['manage-team','schedule-game'],
//   'real-madrid_com': ['player','goalie']
// }

將組分配給用戶,將角色屬性從數組轉換為對象,以后的更改必須指定一個組。

要分配全局角色,您必須像這樣指定全局組:

Roles.addUsersToRoles(id, 'admin', Roles.GLOBAL_GROUP);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM