角色集合有一個 uid 欄位,它參考一個真實的用戶 id(request.auth.id) 和一個包含角色陣列的角色欄位。
function hasRoles(rsc, roles) {
return (rsc in roles);
}
// 規則
allow write, create: if hasRoles(get(/databases/$(database)/documents/roles).data.uid == request.auth.uid, ['super_admin']);

uj5u.com熱心網友回復:
序言:以下答案假設“角色”檔案的 ID 對應于用戶的 UID,這不完全是您的資料模型。您需要稍微調整您的資料模型。
要獲取檔案,您需要執行以下操作:
get(/databases/$(database)/documents/roles/$(request.auth.uid))
然后你想獲得“角色”欄位的值:
get(/databases/$(database)/documents/roles/$(request.auth.uid)).data.role
然后您需要使用 , 的in運算子list來檢查super_admin字串是否在陣列欄位中role:
"super_admin" in get(/databases/$(database)/documents/roles/$(request.auth.uid)).data.role
您還可以使用以下命令一次測驗多個角色List#hasAll():
get(/databases/$(database)/documents/roles/$(request.auth.uid)).data.role.hasAll(["editor", "publisher"])
這些將回傳true或false(請注意,我尚未對其進行測驗,正在通勤和在智能手機上書寫,因此可能需要進行一些微調!:-))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/328997.html
上一篇:在片段內使用回收器視圖時出錯
