-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebcom-security-rules.json
More file actions
92 lines (92 loc) · 2.8 KB
/
webcom-security-rules.json
File metadata and controls
92 lines (92 loc) · 2.8 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{
"rules": {
"users": {
"$userId": {
".read": "auth != null && auth.uid === $userId",
".write": "auth != null && auth.uid === $userId",
"name": {
".read": true,
".validate": "newData.isString() && newData.val().length() <= 30"
},
"surname": {
".read": true,
".validate": "newData.isString() && newData.val().length() <= 30"
},
"email": {
".validate": "auth.providerUid === newData.val()"
},
"prefLang": {
".validate": "newData.isString() && newData.val().length() < 5"
},
"spaces": {
"$spaceId": {
".write": "root.child('spaces').child($spaceId).child('settings').child('users').child(auth.uid).val().role === 'admin'",
"name": {
".validate": "newData.isString() && newData.val().length() <= 30"
},
"description": {
".validate": "newData.isString() && newData.val().length() <= 300"
}
}
}
}
},
"spaces": {
"$spaceId": {
".read": "auth != null && (data.child('settings').child('users').hasChild(auth.uid) || newData.child('settings').child('users').hasChild(auth.uid))",
".write": "auth != null && (!data.exists() || data.child('settings').child('users').child(auth.uid).val().role === 'admin')",
"settings": {
"users": {
"$userId": {
".write": "(auth != null && auth.uid === $userId && newData.val() === null) || (!data.exists() && data.child('users').child(auth.uid).val().role === 'admin')",
"role": {
".write": "auth != null && data.child('users').child(auth.uid).val().role === 'admin'"
}
}
}
},
"network": {
"$gtwId": {
".read": true,
".write": true,
".validate": "newData.hasChild('type')",
"sensors": {
"$sensorId": {
".validate": "newData.hasChildren(['type', 'name', 'description'])"
}
},
"actuators": {
"$actuatorId": {
".validate": "newData.hasChildren(['type', 'name', 'description'])"
}
}
}
},
"lastValue": {
"$gtwId": {
".read": true,
".write": true,
"$sensorId": {
".validate": "newData.hasChild('value')"
}
}
},
"history": {
"$gtwId": {
".write": true
}
},
"actuators": {
"$gtwId": {
".read": true,
".write": true
}
}
}
},
"$other": {
".read": true,
".write": true
}
}
}