-
Notifications
You must be signed in to change notification settings - Fork 1
/
firestore.rules
56 lines (46 loc) · 1.45 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
service cloud.firestore {
match /databases/{database}/documents {
function usuarioPorUid(uid) {
return get(/databases/$(database)/documents/usuarios/$(uid));
}
function autenticado() {
return request.auth != null;
}
function autenticadoComPerfilIn(perfis) {
return autenticado() && (usuarioPorUid(request.auth.uid).data.perfil in perfis);
}
function campoNaoAlterado(campo) {
return !(campo in request.resource.data.keys())
|| request.resource.data[campo] == resource.data[campo];
}
match /carteiras/{carteira} {
allow read: if autenticado();
allow write: if false;
}
match /indicadores/{indicador} {
allow read: if autenticado();
allow write: if false;
}
match /movimentacoes/{movimentacao} {
allow read: if autenticado();
allow write: if false;
}
match /taxas/{taxa} {
allow read: if autenticado();
allow write: if false;
}
match /usuarios/{usuario} {
allow read: if autenticado();
allow update: if autenticadoComPerfilIn(['administrador', 'supervisor'])
|| (autenticado() &&
usuario == request.auth.uid &&
campoNaoAlterado('ativo') &&
campoNaoAlterado('perfil'));
allow create, delete: if false;
}
match /viagens/{viagem} {
allow read: if autenticado();
allow write: if false;
}
}
}