Ответ 1
Во-первых, вам нужно сделать ваши данные "недоступными", взглянуть на функции публикации: http://docs.meteor.com/#meteor_publish
Итак, в вашей функции Meteor.publish для вашего продукта вы должны сделать что-то вроде:
Это гарантирует, что клиент может видеть продукт только в том случае, если он зарегистрирован и имеет подтвержденную учетную запись. Они все равно могут войти в систему, но не могут видеть продукты, пока их учетная запись не будет проверена.
Сервер js
Meteor.publish("productinfo", function () {
user = Meteor.users.findOne({_id:this.userId})
if(user) {
if(user.emails[0].verified) {
//You can put some extra logic in here to check which product the user has, if you're selling or something like that
return Products.find({});
}
}
});
Имейте в виду, что вам нужно удалить autopublish
, который использует метеорит, чтобы облегчить жизнь, он в основном публикует все коллекции до пользователя, но вы хотите ограничить определенную информацию, чтобы удалить ее.
Во-вторых, вам нужно обрабатывать данные на вашем шаблоне, чтобы, если пользователь не заходил в материал шаблона, не видно. Поэтому даже на том этапе, когда браузер загружается, они не будут видеть продукты
Клиент JS
Meteor.subscribe("productinfo");
Template.products.products = function() {
if(Meteor.userId()) {
if(Meteor.user().emails[0].verified) {
return Product.findOne({_id:"your product id"});
}
}
}
Таким образом, помощник шаблона проверяет, зарегистрирован ли пользователь и у него есть подтвержденная учетная запись. Кроме того, если код был изменен на стороне клиента, они не будут видеть продукт из-за функции публикации.