2013-07-22 15 views
5

Attualmente ho una semplice app per cui gli utenti possono creare un elenco e spuntare gli elementi come completati. I dati sono strutturati come segue: '/ acc_' + USER_ID + '/ done' e '/ acc_' + USER_ID + '/ todo'. Quando gli oggetti sono "fatti", vengono spostati nella lista dei fatti.Come strutturare i dati e le regole di Firebase per la condivisione dei dati tra gli utenti?

Quello che mi piacerebbe è che un utente possa condividere un elenco con un altro utente autenticato.

Le regole attualmente sembrano le seguenti che sembrano funzionare.

{ 
    "rules": { 
     "$userPath": { 
      ".read": "auth != null", 
      ".write": "auth != null", 
      ".validate": "$userPath === 'acc_' + auth.id" 
     } 
    } 
} 

Quello che penso che ho bisogno di fare è di avere ogni utente ha una serie di indirizzi e-mail approvati hanno in qualche modo gancio che nelle regole di sicurezza.

In alternativa, è possibile creare un elenco nella radice e avere accesso solo al creatore e agli utenti condivisi.

Qualche consiglio?

risposta

1

Poiché l'utente decide con chi desidera condividere l'elenco, memorizzo tali informazioni nei dati dell'utente stesso. Per esempio:

{ 
    "rules": { 
    "$userPath": { 
     ".write": "$userPath == 'acc_' + auth.id", 
     ".read": "$userPath == 'acc_' + auth.id || root.child($userPath).child('shared').hasChild(auth.id)" 
    } 
    } 
} 

e quindi memorizzare l'elenco degli utenti i dati vengono condivisi con in acc_userid/shared/

+0

non ho avuto molta fortuna con le regole di cui sopra. Ciò che segue sembra funzionare sebbene con 'acc_' + auth.id '/ shared' sia un array dove la prima voce è quella a cui voglio avere accesso. Anche se, a ben vedere, questa non sembra una grande soluzione. Penso che i miei problemi con l'architettura dell'app siano profondi. { "rules": { "$ userPath": { ".write": "$ userPath == 'acc_' + auth.id || root.child ($ userPath) .child ('condiviso'). child ('0'). val() == auth.email ", " .read ":" $ userPath == 'acc_' + auth.id || root.child ($ userPath) .child ('condiviso')) .child ('0'). val() == auth.email " } } } – defmech

+0

così hai trovato qualche buona soluzione? – jujule

Problemi correlati