Dashboard
—
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;
}
}
}
⚙️ إعدادات لوحة الإدارة
📊 إحصاءات النظام
جاري...