2013-02-27 98 views
3

我希望能夠在Meteor認證系統中將用戶標記爲「admin」,並允許該用戶做特殊的事情,並顯示一些gui元素,如果他們不是管理員。我已經嘗試在用戶對象上設置「admin」屬性,這在服務器端(對於管理操作的RPC)上可以正常工作,但是我需要在客戶端訪問它來更改頁面,並且它只顯示與Meteor.user()對象一起發送的電子郵件。流星用戶屬性

基本問題:如何分配服務器和客戶端都可以看到的用戶特定屬性?

回答

6

對於將來的任何人,只需在數據庫的users表中指定值。您可以使用下面的發佈其他領域的用戶:

Meteor.publish("userData", function() { 
    return Meteor.users.find({_id: this.userId}, {fields: {'admin': 1}}); 
}); 

和客戶端上:

Meteor.subscribe("userData"); 

噗。直接從the documentation

+1

LOL!有趣的是,你問了一個問題,然後在2分鐘後自己回答 – Prashant 2013-02-27 04:52:50

+0

不錯,這個效果很好,就像你訂閱後的評論一樣,你可以使用Meteor.user()來訪問數據admin# – phocks 2015-07-10 04:02:24

0

您還可以在用戶的​​「個人資料」屬性中添加屬性。配置文件屬性被alrealaly填充到客戶端:

Meteor.users.update({_id: userId}, {$set: {'profile.admin': 1}}); 

//on client side 
Meteor.user().profile.admin 
+2

你可以*不*想要這樣做。如果你這樣做,默認情況下,任何用戶都可以成爲管理員。由於配置文件對象上的默認讀/寫規則。您希望在配置文件對象之外創建此字段。例如:'Meteor.users.update({_id:id},{$ set:{isAdmin:true}});'http://docs.meteor.com/#meteor_user「http://docs.meteor。 COM /#meteor_user」 – 2014-07-15 21:51:49