いくつかの拒否更新ルールを持つユーザー コレクションがあります。
// The roles object
Schema.roles = new SimpleSchema({
maker: {
type: Boolean,
denyUpdate: true
},
admin: {
type: Boolean,
denyUpdate: true
}
});
これらのデータはユーザー プロファイルにあります。そして明らかに、ランダムなユーザーが変更できるようにしたくありませんprofile.roles.admin
。しかし、管理者ユーザーはできるはずです。
部分的に機能します。ユーザーはこのブール値を変更できません。ただし、次のサーバー側コードから変更できるはずです。
Meteor.users.update({_id: targetID'}, {$set: {'profile.roles.admin': true}});
collection2
サーバーからのコードを信頼するように指示する方法はありますか?
編集:答え
以下の回答のおかげで、スキーマに現在使用しているコードは次のとおりです。
admin: {
type: Boolean,
autoValue: function() {
// If the code is not from the server (isFromTrustedCode)
// unset the update
if(!this.isFromTrustedCode)
this.unset();
}
}
ブール値はisFromTrustedCode
、コードが信頼できるかどうかを示します。単純。ちなみに、このautoValue
オプションは、更新 (または挿入、設定、アップサート) アクションに関する完全なオブジェクトを返します。パラメータは次のとおりです。
isSet: true
unset: [Function]
value: true
operator: '$set'
field: [Function]
siblingField: [Function]
isInsert: false
isUpdate: true
isUpsert: false
userId: null
isFromTrustedCode: true
そのため、著作権ルールを非常にきめ細かく管理することが可能です。