-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfirebase-rules.json
More file actions
49 lines (49 loc) · 4.02 KB
/
Copy pathfirebase-rules.json
File metadata and controls
49 lines (49 loc) · 4.02 KB
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
40
41
42
43
44
45
46
47
48
49
{
"rules": {
".read": false,
".write": false,
"session": {
".read": "auth != null",
"students": {
"$student": {
".write": "auth != null && (!newData.exists() || (newData.hasChildren(['joinedAt', 'date']) && newData.child('date').isString()))",
".validate": "!newData.exists() || (newData.hasChildren(['joinedAt', 'date']) && newData.child('joinedAt').isNumber() && newData.child('date').isString())"
}
},
"activePoll": {
".write": "auth != null",
".validate": "!newData.exists() || (newData.hasChildren(['id', 'question', 'options', 'duration', 'resultPolicy', 'correctPolicy', 'startedAt', 'ended', 'revealResults', 'revealCorrect']) && newData.child('id').isString() && newData.child('question').isString() && newData.child('options').hasChildren() && newData.child('duration').isNumber() && newData.child('duration').val() >= 1 && newData.child('duration').val() <= 3600 && newData.child('resultPolicy').isString() && (newData.child('resultPolicy').val() == 'on_submit' || newData.child('resultPolicy').val() == 'manual' || newData.child('resultPolicy').val() == 'never') && newData.child('correctPolicy').isString() && (newData.child('correctPolicy').val() == 'with_results' || newData.child('correctPolicy').val() == 'manual' || newData.child('correctPolicy').val() == 'never') && newData.child('startedAt').isNumber() && newData.child('ended').isBoolean() && newData.child('revealResults').isBoolean() && newData.child('revealCorrect').isBoolean() && (!newData.child('correctIndex').exists() || (newData.child('correctIndex').isNumber() && newData.child('correctIndex').val() >= 0 && (newData.child('correctIndex').val() % 1 == 0))))",
"responses": {
"$student": {
".validate": "newData.isNumber() && newData.val() >= 0 && (newData.val() % 1 == 0)"
}
}
},
"queue": {
".write": "auth != null",
".validate": "!newData.exists() || (newData.hasChildren(['setId', 'setName', 'currentIndex', 'totalPolls', 'sessionKey']) && newData.child('setId').isString() && newData.child('setName').isString() && newData.child('currentIndex').isNumber() && newData.child('totalPolls').isNumber() && newData.child('sessionKey').isString())"
}
},
"sessionStudents": {
".read": "auth != null",
"$entry": {
".write": "auth != null",
".validate": "!newData.exists() || (newData.hasChildren(['name', 'date', 'joinedAt']) && newData.child('name').isString() && newData.child('date').isString() && newData.child('joinedAt').isNumber())"
}
},
"pollHistory": {
".read": "auth != null",
"$poll": {
".write": "auth != null",
".validate": "!newData.exists() || (newData.hasChildren(['id', 'question', 'options', 'duration', 'resultPolicy', 'correctPolicy', 'startedAt']) && newData.child('id').isString() && newData.child('question').isString() && newData.child('options').hasChildren() && newData.child('duration').isNumber() && newData.child('resultPolicy').isString() && (newData.child('resultPolicy').val() == 'on_submit' || newData.child('resultPolicy').val() == 'manual' || newData.child('resultPolicy').val() == 'never') && newData.child('correctPolicy').isString() && (newData.child('correctPolicy').val() == 'with_results' || newData.child('correctPolicy').val() == 'manual' || newData.child('correctPolicy').val() == 'never') && newData.child('startedAt').isNumber() && (!newData.child('endedAt').exists() || newData.child('endedAt').isNumber()) && (!newData.child('correctIndex').exists() || (newData.child('correctIndex').isNumber() && newData.child('correctIndex').val() >= 0 && (newData.child('correctIndex').val() % 1 == 0))))"
}
},
"pollSets": {
".read": "auth != null",
"$set": {
".write": "auth != null",
".validate": "!newData.exists() || (newData.hasChildren(['id', 'name', 'createdAt', 'defaults']) && newData.child('id').isString() && newData.child('name').isString() && newData.child('createdAt').isNumber())"
}
}
}
}