Firebase Rules¶
Cập nhật gần nhất: 17/03/2026
Điểm chính của Firestore rules¶
Rules nằm ở firebase/firestore.rules và đang đảm bảo:
- chỉ cho truy cập khi đã xác thực
- đọc theo phạm vi clan bằng claims hoặc fallback
users/{uid} - ghi theo vai trò cho
clans,branches,members,relationships - bảo vệ cập nhật hồ sơ cá nhân qua kiểm tra diff trường cho phép
- collection nhạy cảm chỉ cho server ghi (
transactions,auditLogs, ...)
Mô hình rule cho billing:
subscriptions,paymentTransactions,subscriptionInvoices,paymentWebhookEventschỉ server được ghi- dữ liệu billing chỉ owner/admin cùng
clanIdmới được đọc - webhook-event không cho client thường đọc
billingAuditLogschỉ cho vai trò billing admin đọc, server-only write
Helper chính¶
hasClanAccess(clanId)primaryRole()branchIdClaim()isClanSettingsAdmin()isBranchScopedMemberManager(...)safeProfileUpdate()
Điểm chính của Storage rules¶
Rules nằm ở firebase/storage.rules và đảm bảo:
- đọc theo phạm vi clan
- đường dẫn avatar:
clans/{clanId}/members/{memberId}/avatar/{fileName}- chỉ clan admin hoặc chủ hồ sơ mới được ghi
- chỉ nhận file ảnh, giới hạn 10 MB
- đường dẫn tệp submission:
submissions/{clanId}/{memberId}/{fileName}- thành viên sở hữu được ghi, giới hạn 20 MB
Hướng dẫn vận hành¶
- version hóa rules/indexes cùng thay đổi tính năng
- deploy rules/indexes qua CI từ nhánh bảo vệ
- khi thêm role field mới, cập nhật cả claims và
users/{uid}fallback - giữ tài liệu rules đồng bộ qua script validate trong CI
- thêm billing collections vào ma trận test rules/emulator trước rollout