Meteor alanning:roles - Ошибка при вызове метода updateRoles: внутренняя ошибка сервера [500]

Я пытаюсь установить роль для вошедшего в систему пользователя (используя пакет alanning:roles) с помощью метода на сервер. Вот что у меня есть...

Клиент

var userId = Meteor.userId();
Meteor.call('updateRoles',userId,'admin');

А это упрощенная версия метода из документации...

сервер/userMethods.js

Meteor.methods({
    updateRoles: function (targetUserId, roles) {
        Roles.setUserRoles(targetUserId, roles)
    }
})

Независимо от того, что я пытаюсь, я продолжаю получать следующую ошибку...

Error invoking Method 'updateRoles': Internal server error [500]

person Serks    schedule 15.01.2016    source источник
comment
Обратите внимание, что с помощью этого метода любой пользователь может установить себя в качестве администратора.   -  person Michel Floyd    schedule 15.01.2016
comment
Да, я знаю, я упростил способ задать вопрос, так как был уверен, что проблема не связана с пропущенным кодом. Я буду использовать тот же метод из документации.   -  person Serks    schedule 15.01.2016


Ответы (1)


Проблема решена.

Причина в том, что я использую автоформу (простую схему) для коллекции «пользователи», и мне нужно было включить в схему следующую (незакомментированную часть)...

// Add `roles` to your schema if you use the meteor-roles package.
// Option 1: Object type
// If you specify that type as Object, you must also specify the
// `Roles.GLOBAL_GROUP` group whenever you add a user to a role.
// Example:
// Roles.addUsersToRoles(userId, ["admin"], Roles.GLOBAL_GROUP);
// You can't mix and match adding with and without a group since
// you will fail validation in some cases.
//
//roles: {
//    type: Object,
//    optional: true,
//    blackbox: true
//},
// Option 2: [String] type
// If you are sure you will never need to use role groups, then
// you can specify [String] as the type

roles: {
    type: [String],
    optional: true
},
person Serks    schedule 15.01.2016