2015-09-16 1 views
0

Я использую alanning:roles и хочу проверить, чтобы данная роль предоставляла доступ к БД. Можно ли сделать какой-то код, если доступ запрещен - что-то вроде уведомления?Проверить роль в allow() - функция и установить предупреждение, если отклонено

Update

Как вы можете видеть, я не понял метод ошибки броска на всех.

server.js

Meteor.methods({ 
    'crashme':function() { 
     throw new Meteor.Error(402, "Access Denied", "details", "more details"); 
    } 
}); 

Users.allow({ 
    insert: function(userId) { 
     if (Roles.userIsInRole(userId, 'admin')) return true; 
    }, 
    update: function(userId) { 
     if (Roles.userIsInRole(userId, 'admin')) return true; 
    }, 
    remove: function(userId) { 
     if (Roles.userIsInRole(userId, 'admin')) return true; 
    } 
}); 

На клиентской стороне я

client.js

Roles.addUsersToRoles(userId, 'anything'); 

Meteor.call("crashme", function(err, result) { 
    console.log(err); 
}); 

Если addUsersToRoles терпит неудачу, пользователь должен видеть уведомление. ..

+0

Да, это должно сработать. Конечно, это будет отображаться на консоли * server *, а не на вашем клиенте. Но это также очень легко проверить на клиенте, поскольку вставка или обновление не будут выполнены с ошибкой в ​​обратном вызове. –

+0

Хм ... Не уверен, если я тебя понимаю. Я хочу сообщить пользователю информацию на клиентской стороне. Но я не знаю, куда поместить код. Вышеприведенный код находится на стороне сервера, конечно ... – user3142695

+0

ОК, теперь я понимаю вашу проблему. См. Ответ ниже. –

ответ

0

Выбросьте исключение метеора на стороне сервера - поймайте исключение на клиенте.

Дайте своему исключению сообщение - покажите его пользователю.

throw new Meteor.Error(XX,e.message); 

Смотрите следующее: Throwing Error

Попробуйте что-то вроде этого:

Users.allow({ 
    insert: function(userId) { 
     if (Roles.userIsInRole(userId, 'admin')) 
      return true 
     else 
      throw new Meteor.Error(xx,xx); 
    } 
}); 

На клиенте

SomeCollection.remove(someId, function(err, result) { 
    console.log(err.message); // Outputs "Not the owner" 
}); 

Пожалуйста, посмотрите на этот пост тоже: also shown here

+0

Звучит логика. Можете ли вы привести пример? – user3142695

+0

См. Ссылку в моем сообщении. –

+0

Прочтите ссылку и документы, но, к сожалению, я не полностью понимаю обработку. Обновлено мое сообщение, так что вы увидите мою проблему. – user3142695

Смежные вопросы