إعداد Firebase السحابي

ربط تطبيق مدفوعات بقاعدة بيانات Firebase Firestore
لتخزين البيانات على السحابة ومزامنتها بين جميع الأجهزة

خطوات إنشاء مشروع Firebase
  1. 1
    اذهب إلى console.firebase.google.com وسجّل دخولك بحساب Google
  2. 2
    اضغط "إضافة مشروع" أو "Create a project" — اختر اسماً مثل madfuaat-erp ثم اضغط متابعة
  3. 3
    في القائمة الجانبية اختر Build → Authentication ثم اضغط "Get started" وفعّل طريقة تسجيل الدخول "Email/Password"
  4. 4
    اختر Build → Firestore Database ثم اضغط "Create database" — اختر "Start in test mode" أولاً (سنضبط القواعد لاحقاً)
  5. 5
    اذهب إلى Project Settings (أيقونة الترس ⚙️ أعلى القائمة) ثم تبويب "Your apps" → اضغط أيقونة </> (Web App) لإضافة تطبيق ويب
  6. 6
    أدخل اسماً للتطبيق (مثل madfuaat-web) واضغط "Register app" — ستظهر بيانات الإعداد (firebaseConfig) انسخها كاملاً
  7. 7
    اذهب لتبويب "إدخال البيانات" وألصق الكود المنسوخ
إعداد قواعد الأمان (Firestore Rules)

بعد إعداد Firebase، اذهب إلى Firestore → Rules وانسخ القواعد التالية واستبدل القواعد الموجودة بها:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    function getUserData() {
      return get(/databases/$(database)/documents/users/$(request.auth.uid)).data;
    }
    function isAuth() { return request.auth != null; }
    function belongsToCompany(companyId) {
      return isAuth() && getUserData().companyId == companyId;
    }
    function isAdminOf(companyId) {
      return belongsToCompany(companyId) && getUserData().role == 'admin';
    }

    match /users/{userId} {
      allow read: if isAuth() && request.auth.uid == userId;
      allow create: if isAuth() && request.auth.uid == userId;
      allow update: if isAuth() && request.auth.uid == userId;
    }

    match /companies/{companyId} {
      allow read:  if belongsToCompany(companyId);
      allow write: if isAdminOf(companyId);

      match /invoices/{id} {
        allow read, create, update: if belongsToCompany(companyId);
        allow delete: if isAdminOf(companyId);
      }
      match /stock/{id}    { allow read: if belongsToCompany(companyId); allow write: if isAdminOf(companyId); }
      match /fleet/{id}    { allow read: if belongsToCompany(companyId); allow write: if isAdminOf(companyId); }
      match /sellers/{id}  { allow read: if belongsToCompany(companyId); allow write: if isAdminOf(companyId); }
      match /expenses/{id} { allow read: if belongsToCompany(companyId); allow write: if isAdminOf(companyId); }
    }

    match /{document=**} { allow read, write: if false; }
  }
}
نصيحة مجانية 100%: الخطة المجانية لـ Firebase (Spark) تكفي لـ 10-20 شركة نشطة يومياً. تشمل 50,000 قراءة/يوم و20,000 كتابة/يوم و1 GB تخزين. كافية تماماً للبداية.
الصق بيانات Firebase هنا

بعد إنشاء تطبيق الويب في Firebase Console، ستحصل على كود مثل هذا — انسخه والصقه بالكامل:

يمكنك لصق الكود كاملاً (const firebaseConfig = {...}) أو JSON فقط ({ apiKey: "...", ... }) — سيتم استخراج البيانات تلقائياً
اختبار اتصال Firebase

اضغط الزر لاختبار الاتصال بـ Firebase والتحقق من صحة الإعدادات.