小型Firebase节点工作者传递userid

时间:2015-10-09 09:26:45

标签: javascript firebase

我正在开发一个应用程序,管理员可以在其中创建一个客户帐户,然后该帐户只能读取管理员创建的资源。

我的安全规则定义如下:

{
  "rules":{
    ".write":"false",
    ".read":"false",
    "users": {
      ".write":"false",
      ".read":"false",
      "$userid": {
        ".write":"false",
        ".read":"($userid===auth.uid||root.child('clients').hasChild('auth.uid'))"
...
...
}

我希望客户端然后通过myfirebase.firebaseio.com/users/$adminUID/...

访问资源

其中$adminUID是管理帐户的用户ID,其中存储了资源。

将新创建的用户ID添加到/users/$adminUID/clients似乎相当简单,因为firebase SDK会返回您创建的任何新用户的UID。

但我正在使用iOS和OS X,因此我无法为我正在创建的用户传递参数。这使我开始研究如何设置一个小Node js工作人员来监听新创建的用户,然后设置path属性(这将是管理员的用户ID)。

但目前我正在努力弄清楚如何实现这一点。

我尝试使用以下命令设置快速节点脚本:

var Firebase = require('firebase');
var ref = new Firebase('https://myfirebase.firebaseio.com/');

ref.child('users/').on('value', function(snapshot) {
  console.log(snapshot.val());
});

然后使用node worker.js运行它,但它不会在日志中返回任何内容。

修改 添加了来自rules.yaml的摘录

access:
  - location: /users/$userid/
    read: $userid === auth.uid
  - location: users/$userid/organisation/info
    write: ($userid === auth.uid) && (createOnly() || updateOnly())
  - location: users/$userid/slides/
    write: ($userid === auth.uid)
  - location: users/$userid/general/
    write: ($userid === auth.uid)
  - location: users/$userid/data
    write: ($userid === auth.uid)
  - location: /users/$userid
    read: root.clients.hasChild('auth.uid')

0 个答案:

没有答案