2016-09-01 61 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進行書寫的事實有關? –