Dashboard
0
إجمالي المستخدمين
0
مشتركون مدفوعون
0
تجريبي / ساعة مجانية
0
منتهي الصلاحية
0
متصلون الآن
📈 نشاط اليوم
⚡ إجراءات سريعة
تبديل سريع
وضع الصيانة
قفل التطبيق
وضع Guest فقط
🕐 آخر نشاط — المستخدمون المتصلون
جاري التحميل...
إجمالي: 0
الخطة:
المستخدمالخطةالاشتراكالسيرفر آخر ظهورالجهازالإجراءات
جاري التحميل...
🔍 البحث عن مستخدم
⚡ بيانات التفعيل
⚙️ إجراءات أخرى
0
إجمالي المشتركين
0
نشطون
0
منتهي
0
ينتهي قريباً (7 أيام)
المستخدمالخطةالسيرفر الخاص تاريخ الانتهاءالأيام المتبقيةالإجراءات
جاري التحميل...
⏱ المستخدمون المجانيون — استهلاك الساعة اليومية
كل مستخدم مسجّل يحصل على ساعة مشاهدة يومياً مجاناً عبر السيرفر الافتراضي. الاستهلاك يُحسب من Firestore.
جاري التحميل...
➕ إضافة سيرفر
🌐 السيرفر الافتراضي (للمجانيين)
هذه البيانات تُخزَّن في app_config/remote_config ولا تظهر في الكود.
السيرفرات (0)
جاري التحميل...
جميع إعدادات التطبيق مباشرة من Firebase
🎮 مفاتيح النظام حساسة
وضع الصيانة
🟢 التطبيق يعمل بشكل طبيعي
قفل التطبيق
🟢 التطبيق مفتوح
Guest Only
🟢 الكل يسجل دخول
رسالة الصيانة
رسالة القفل
🌐 الاتصال بالسيرفر RC Class
server_host
default_server_host
username (default)
password (default)
💳 الاشتراك والدعم
whatsapp
telegram
buy_url
🚀 إدارة الإصدار
min_version
store_url
force_update
🤖 مفاتيح API
ai_key (Claude)
tmdb_key
🚀 إصدار التطبيق
تحديث إجباري
📋 سجل الإصدارات
جاري التحميل...
📡 إرسال إشعار
📋 الإشعارات السابقة
جاري التحميل...
🚫 المستخدمون المحظورون (0)
لا محظورون
🛡 Firestore Rules المحدّثة للنظام الجديد
هذه Rules متوافقة مع هيكل users/{uid} الجديد مع دعم orders.
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    function isAdmin() {
      return request.auth != null &&
        request.auth.token.email in [
          'admin@totv.com',
          'haedirasso@gmail.com'
        ];
    }
    function isAuth()  { return request.auth != null; }
    function isOwner(uid) {
      return isAuth() && request.auth.uid == uid;
    }

    // app_config — قراءة للجميع، كتابة للأدمن
    match /app_config/{doc} {
      allow read:  if true;
      allow write: if isAdmin();
    }

    // users/{uid} — النظام الجديد
    match /users/{uid} {
      allow read:   if isOwner(uid) || isAdmin();
      allow create: if isOwner(uid);
      allow update: if (isOwner(uid) &&
        !request.resource.data.diff(resource.data)
          .affectedKeys().hasAny(['status','role','is_admin',
            'subscription.plan','subscription.host',
            'subscription.username','subscription.password',
            'free_hours_per_day'])) ||
        isAdmin();
      allow delete: if isAdmin();
    }

    // orders — الطلبات (المستخدم يكتب، الأدمن يدير)
    match /orders/{orderId} {
      allow read:   if isAuth() &&
        (resource.data.uid == request.auth.uid || isAdmin());
      allow create: if isAuth() &&
        request.resource.data.uid == request.auth.uid;
      allow update, delete: if isAdmin();
    }

    // notifications — قراءة للكل
    match /notifications/{doc} {
      allow read:  if true;
      allow write: if isAdmin();
    }

    // servers — الأدمن فقط
    match /servers/{doc} {
      allow read:  if isAuth();
      allow write: if isAdmin();
    }

    // version_history — الأدمن فقط
    match /version_history/{doc} {
      allow read, write: if isAdmin();
    }

    // app_logs — المسجلون يكتبون، الأدمن يقرأ
    match /app_logs/{log} {
      allow create: if isAuth();
      allow read, update, delete: if isAdmin();
    }

    // catch-all
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
⚙️ إعدادات لوحة الإدارة
📊 إحصاءات النظام
جاري...