هذا هو إصدار SQL لتقرير لوحة المعلومات لتسجيلات مسؤولي النظام.
يوفر هذا التقرير نظرة عامة على نشاط تسجيل دخول المسؤولين ضمن نطاق تاريخ محدد، ويساعد في تتبع متى ومن أي عناوين IP قام المسؤولون بتسجيل الدخول إلى Discourse.
--[params]
--date :start_date
--date :end_date
SELECT
u.id user_id,
u.username username,
t1.client_ip as location,
t1.created_at as login_at
FROM (
SELECT DISTINCT ON (t.client_ip, t.user_id) t.client_ip, t.user_id, t.created_at
FROM user_auth_token_logs t
INNER JOIN users u ON u.id = t.user_id
WHERE u.admin = TRUE
AND t.created_at >= :start_date
AND t.created_at <= :end_date
ORDER BY t.client_ip, t.user_id, t.created_at DESC
) t1
JOIN users u ON u.id = t1.user_id
ORDER BY login_at DESC
شرح استعلام SQL
تم تصميم استعلام SQL لاسترداد قائمة بأحداث تسجيل الدخول الفريدة للمسؤولين. يقوم بتصفية البيانات وعرضها بناءً على المعايير التالية:
- المعلمات: يقبل الاستعلام معلمتين،
:start_dateو:end_date، لتحديد الفترة التي تتطلب بيانات تسجيل الدخول. تقبل كلتا معلمتي التاريخ تنسيق التاريخYYYY-MM-DD. - تسجيلات الدخول المميزة: يستخدم استعلامًا فرعيًا (
t1) معSELECT DISTINCT ONلضمان أن كل تركيبة منclient_ipوuser_idفريدة، مما يعطينا فعليًا أحدث حدث تسجيل دخول لكل مسؤول في كل عنوان IP ضمن النطاق الزمني. - فلتر المسؤول: يبحث الاستعلام على وجه التحديد عن المستخدمين الذين لديهم علامة
adminمضبوطة علىTRUE، مع التركيز فقط على حسابات المسؤولين. - الانضمام إلى المستخدمين: يتم ربط الاستعلام الفرعي مرة أخرى بجدول
usersلجلب أسماء المستخدمين المقابلة لمعرفات المستخدمين. - الترتيب: يتم ترتيب النتائج حسب الطابع الزمني
login_atبترتيب تنازلي، مما يظهر أحدث أحداث تسجيل دخول المسؤولين أولاً.
أعمدة الإخراج هي كما يلي:
user_id: المعرف الفريد للمسؤول الذي قام بتسجيل الدخول.username: اسم المستخدم للمسؤول الذي قام بتسجيل الدخول.location: عنوان IP الذي قام المسؤول بتسجيل الدخول منه.login_at: الطابع الزمني لوقت تسجيل دخول المسؤول.
هذا التقرير قيّم لأغراض الأمان والتدقيق، مما يضمن مراقبة وتسجيل جميع عمليات تسجيل دخول المسؤولين.
نتائج مثال
| user | username | location | login_at |
|---|---|---|---|
| 1 | admin_user_1 | 123.45.67.89 | 2023-12-13T23:59:55.733Z |
| 2 | admin_user_2 | 123.45.67.89 | 2023-12-14T23:59:45.685Z |
| 3 | admin_user_3 | 123.45.67.89 | 2023-12-15T23:59:43.033Z |
| … | … | … | … |