Skip to content

Commit d6c0937

Browse files
Fix: Potential Firestore rules issue
The user reports no change after the previous fixes and suspects the Firestore security rules are the cause.
1 parent 0756d85 commit d6c0937

File tree

1 file changed

+62
-31
lines changed

1 file changed

+62
-31
lines changed

firestore.rules

Lines changed: 62 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,84 +5,115 @@ service cloud.firestore {
55
match /databases/{database}/documents {
66

77
// ======================================
8-
// RÈGLES SIMPLIFIÉES ET PERMISSIVES
8+
// RÈGLES FIRESTORE CORRIGÉES ET OPTIMISÉES
99
// ======================================
1010

11-
// Règle générale : utilisateur authentifié peut accéder à SES données
12-
match /{collection}/{document} {
13-
// Lecture/écriture : utilisateur authentifié ET c'est ses propres données
14-
allow read, write: if request.auth != null &&
15-
(request.auth.uid == resource.data.userId ||
16-
request.auth.uid == request.resource.data.userId);
17-
}
18-
1911
// ======================================
20-
// RÈGLES SPÉCIFIQUES POUR LES CAMPAGNES
12+
// CAMPAGNES - Accès utilisateur seulement
2113
// ======================================
2214
match /campaigns/{campaignId} {
23-
allow read, write: if request.auth != null &&
24-
(request.auth.uid == resource.data.userId ||
25-
request.auth.uid == request.resource.data.userId);
15+
// Lecture : utilisateur authentifié ET propriétaire
16+
allow read: if request.auth != null &&
17+
request.auth.uid == resource.data.userId;
18+
19+
// Création : utilisateur authentifié ET défini comme propriétaire
20+
allow create: if request.auth != null &&
21+
request.auth.uid == request.resource.data.userId;
22+
23+
// Mise à jour : utilisateur authentifié ET propriétaire existant
24+
allow update: if request.auth != null &&
25+
request.auth.uid == resource.data.userId;
26+
27+
// Suppression : utilisateur authentifié ET propriétaire
28+
allow delete: if request.auth != null &&
29+
request.auth.uid == resource.data.userId;
2630
}
2731

2832
// ======================================
29-
// RÈGLES POUR LES AFFILIÉS
33+
// AFFILIÉS - Accès utilisateur seulement
3034
// ======================================
3135
match /affiliates/{affiliateId} {
32-
allow read, write: if request.auth != null &&
33-
(request.auth.uid == resource.data.userId ||
34-
request.auth.uid == request.resource.data.userId);
36+
// Lecture : utilisateur authentifié ET propriétaire
37+
allow read: if request.auth != null &&
38+
request.auth.uid == resource.data.userId;
39+
40+
// Création : utilisateur authentifié ET défini comme propriétaire
41+
allow create: if request.auth != null &&
42+
request.auth.uid == request.resource.data.userId;
43+
44+
// Mise à jour : utilisateur authentifié ET propriétaire existant
45+
allow update: if request.auth != null &&
46+
request.auth.uid == resource.data.userId;
47+
48+
// Suppression : utilisateur authentifié ET propriétaire
49+
allow delete: if request.auth != null &&
50+
request.auth.uid == resource.data.userId;
3551
}
3652

3753
// ======================================
38-
// RÈGLES PERMISSIVES POUR LES CLICS ET CONVERSIONS
54+
// CLICS - Plus permissif pour le tracking
3955
// ======================================
4056
match /clicks/{clickId} {
41-
// Lecture : propriétaire de la campagne
57+
// Lecture : tous les utilisateurs authentifiés
4258
allow read: if request.auth != null;
4359

44-
// Création/mise à jour : plus permissif pour le tracking
45-
allow create, update: if request.auth != null;
60+
// Création : tous les utilisateurs authentifiés (pour tracking public)
61+
allow create: if request.auth != null;
62+
63+
// Mise à jour : propriétaire seulement
64+
allow update: if request.auth != null &&
65+
request.auth.uid == resource.data.userId;
4666

4767
// Suppression : propriétaire seulement
4868
allow delete: if request.auth != null &&
4969
request.auth.uid == resource.data.userId;
5070
}
5171

72+
// ======================================
73+
// CONVERSIONS - Plus permissif pour le tracking
74+
// ======================================
5275
match /conversions/{conversionId} {
53-
// Lecture : propriétaire de la campagne
76+
// Lecture : tous les utilisateurs authentifiés
5477
allow read: if request.auth != null;
5578

56-
// Création/mise à jour : plus permissif pour le tracking
57-
allow create, update: if request.auth != null;
79+
// Création : tous les utilisateurs authentifiés (pour tracking public)
80+
allow create: if request.auth != null;
81+
82+
// Mise à jour : propriétaire seulement
83+
allow update: if request.auth != null &&
84+
request.auth.uid == resource.data.userId;
5885

5986
// Suppression : propriétaire seulement
6087
allow delete: if request.auth != null &&
6188
request.auth.uid == resource.data.userId;
6289
}
6390

6491
// ======================================
65-
// RÈGLES PERMISSIVES POUR LES LIENS COURTS
92+
// LIENS COURTS - Lecture publique nécessaire
6693
// ======================================
6794
match /shortLinks/{linkId} {
68-
// Lecture publique (nécessaire pour redirection)
95+
// Lecture publique (pour redirection)
6996
allow read: if true;
7097

71-
// Création/mise à jour : utilisateur authentifié
72-
allow create, update: if request.auth != null;
98+
// Création : utilisateur authentifié
99+
allow create: if request.auth != null;
100+
101+
// Mise à jour : propriétaire seulement
102+
allow update: if request.auth != null &&
103+
request.auth.uid == resource.data.userId;
73104

74105
// Suppression : propriétaire seulement
75106
allow delete: if request.auth != null &&
76107
request.auth.uid == resource.data.userId;
77108
}
78109

79110
// ======================================
80-
// RÈGLE DE SÉCURITÉ DE BASE
111+
// SÉCURITÉ PAR DÉFAUT
81112
// ======================================
82113

83-
// Bloquer l'accès non authentifié par défaut
114+
// Bloquer tout le reste
84115
match /{document=**} {
85-
allow read, write: if request.auth != null;
116+
allow read, write: if false;
86117
}
87118
}
88119
}

0 commit comments

Comments
 (0)