2016-09-01 63 views
0

我正在创建的团队来完成流程的应用程序被拒绝。这些进程的成员是管理员,他们可以写信给他们,然后只是可以阅读的普通用户。当用户第一次创建一个进程时,默认情况下它们是一个管理员。但是每当我试图创建一个进程,我收到拒绝“权限”从火力地堡,我无法。我基本上是读(只是用“管理员”路径替换“用户”路径),我能读的过程就好了同样的规则。只是无法做到这一点。任何想法为什么发生这种情况。返回许可火力地堡安全规则时,试图写入数据库

下面是安全规则的过程:

"processes": { 
     "$processID": { 
      ".read": "auth.uid != null && data.child('users/' + auth.uid).val() === true", 
      ".write": "auth.uid != null && newData.child('admins/' + auth.uid).val() === true" 
     } 
     } 

下面是过程的数据结构:

processes 
-KQ_j5Yt75GktE5pBRFS 
    admins 
     HESy7LE7JbeNyHKaGeyWRhNIuE83: true 
    createdOn: "2016-09-01T04:00:00.000Z" 
    description: "This is an example process" 
    name: "Example Personal Process" 
    tasks 
    team: "-KQ_iwUmXsx0zasoPxT9" 
    users 
     HESy7LE7JbeNyHKaGeyWRhNIuE83: true 

下面是函数其中I创建一个进程:

actions: { 
     createProcess(processName, processDescription) { 
     var teamId = this.controllerFor('processes/new').get('teamId'); 
     var self = this; 
     console.log("team: "+teamId); 
     let currentUser = this.get('user').get('currentUser'); 
     let team = this.get('store').peekRecord('team', teamId); 
     let user = this.get('store').peekRecord('user', currentUser.id); 
     console.log("user "+currentUser.id) 
     let process = this.get('store').createRecord('process', { 
      team: team, 
      user: user, 
      admin: user, 
      name: processName, 
      description: processDescription 
     }); 
     user.get('processes').pushObject(process); 
     user.get('processesLead').pushObject(process); 
     team.get('processes').pushObject(process); 
     console.log("about to save process"); 
     process.save().then(function() { 
     console.log(process.admin.id); 
     user.save(); 
     console.log("user saved"); 
     team.save(); 
     console.log("team saved"); 
    }).then(() => this.transitionTo('team', teamId)); 
     } 

这是我的用户模型的一部分。

processes: DS.hasMany('process'), 
    tasks: DS.hasMany('task'), 
    processesLead: DS.hasMany('process', { inverse: 'admins' }), 
    teamsLead: DS.hasMany('team', { inverse: 'admins' }), 
    tasksLead: DS.hasMany('task', { inverse: 'admins' }), 
    processMember: DS.hasMany('process', { inverse: 'members' }), 
    teamMember: DS.hasMany('team', { inverse: 'members' }), 
    taskMember: DS.hasMany('task', { inverse: 'members' }) 

这里是我的过程模型的一部分:

users: DS.hasMany('user'), 
    admins: DS.hasMany('user', { inverse: 'processesLead' }), 
    members: DS.hasMany('user', { inverse: 'processMember' }) 
+0

显示代码,您写DB –

+0

看在上帝的份上,请用UNIX时间戳 –

+0

刚刚添加的代码日期/时间字符串。 @DimaRostopira –

回答

-1

你必须单独data.child('users/' + auth.uid)到2个不同的.child()声明。所以像这样:data.child('users').child(auth.uid)

+0

于是我就试过了,仍然有同样的问题。我能够阅读这些流程,但仍然无法写信给他们。任何想法为什么?这是否与我使用newData进行书写的事实有关? –