Repository navigation
Expand file tree
/
Copy pathfirestore.rules
More file actions
50 lines (44 loc) · 2.75 KB
/
Copy pathfirestore.rules
File metadata and controls
50 lines (44 loc) · 2.75 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
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// =====================================================================
// قوانین امنیتی فایراستور پروژه دُرسا (Dorsa Firestore Security Rules)
// =====================================================================
// ۱. مجموعه notifications:
// خواندن اعلانهای عمومی برای تمامی کاربران آزاد است.
// هرگونه نوشتن، ویرایش یا حذف اعلانها از سمت کلاینت عمومی مسدود بوده و تنها توسط محیط ادمین/سرور مجاز است.
//
// ۲. مجموعه fcm_tokens:
// خواندن توکنهای نوتیفیکیشن برای کلاینتها ممنوع است (جلوگیری از افشای توکنها و اطلاعات دستگاهها).
// نوشتن و بهروزرسانی توکن تنها برای سند اختصاصی همان کاربر (بر اساس dorsa_user_id) مجاز است.
//
// ۳. مجموعه user_sessions:
// خواندن نشستها برای کلاینتهای عمومی ممنوع است (حفظ حریم خصوصی کاربران).
// ثبت و بهروزرسانی وضعیت حضور و نشست تنها برای سند اختصاصی خود کاربر مجاز است.
//
// ۴. سایر مسیرها:
// بهصورت پیشفرض مسدود است (Default Deny).
// =====================================================================
// مجموعه اعلانهای عمومی: خواندن آزاد، نوشتن ممنوع
match /notifications/{notificationId} {
allow read: if true;
allow write: if false;
}
// مجموعه توکنهای نوتیفیکیشن: خواندن ممنوع، ایجاد و بهروزرسانی فقط برای سند خودِ کاربر
match /fcm_tokens/{userId} {
allow read: if false;
allow create, update: if userId != null && userId != '' && request.resource.data.userId == userId;
allow delete: if false;
}
// مجموعه نشستهای کاربران: خواندن ممنوع، ایجاد و بهروزرسانی فقط برای سند خودِ کاربر
match /user_sessions/{userId} {
allow read: if false;
allow create, update: if userId != null && userId != '' && request.resource.data.userId == userId;
allow delete: if false;
}
// قانون پیشفرض امنیتی: هرگونه دسترسی خواندن و نوشتن به سایر مسیرها کاملاً مسدود است
match /{document=**} {
allow read, write: if false;
}
}
}