-
Notifications
You must be signed in to change notification settings - Fork 1
/
database.rules.bolt
39 lines (33 loc) · 1.03 KB
/
database.rules.bolt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
path /history/{houseId} is Object {
read() { currentUserBelongsToThisHouse(houseId) }
write() { currentUserBelongsToThisHouse(houseId) }
}
path /history/{houseId}/{uid}/{entry} is HistoryEntry;
type HistoryEntry {
beers: Number,
time: Number,
metaData: Object | Boolean
}
path /houses/{houseId} {
read() { currentUserBelongsToThisHouse(houseId) }
write() { currentUserBelongsToThisHouse(houseId) }
}
path /settings/{uid} {
read() { isCurrentUser(uid) }
write() { isCurrentUser(uid) }
}
path /invites/{inviteId} {
read() { false }
write() { currentUserBelongsToThisHouse(newData.child('house').val()) }
index() { "email" } // increases efficiency with the addUserToDB CF
}
isCurrentUser(uid) { auth != null && auth.uid == uid }
// prior(root) is needed otherwise firepase changes it to some weird parent strucute in the write block
currentUserBelongsToThisHouse(houseId) {
return prior(root)
.child('houses')
.child(houseId)
.child('users')
.child(auth.uid)
.val() != null
}