-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfirestore.rules
41 lines (38 loc) · 1.34 KB
/
firestore.rules
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
function validateContent(content) {
return content != null && content.trim() != ''
}
service cloud.firestore {
match /databases/{database}/documents {
match /threads/{thread} {
allow read:
if request.auth.uid != null;
allow create:
if request.auth.uid != null
&& request.resource.data.board in ['cyb', 'psy', 'art', 'cult', 'tech', 'λ', 'Δ', 'φ']
&& request.resource.data.createdAt == request.time // not sure if correct
&& (
!('image' in request.resource.data)
|| request.resource.data.image.matches('[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}')
)
&& validateContent(request.resource.data.content);
match /comments/{comment} {
allow read:
if request.auth.uid != null;
allow create:
if request.auth.uid != null
&& request.resource.data.createdAt == request.time // not sure if correct
&& (
!('image' in request.resource.data)
|| request.resource.data.image.matches('[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}')
)
&& validateContent(request.resource.data.content);
}
}
match /counters/{counter} {
allow read:
if request.auth.uid != null;
allow write:
if false;
}
}
}