تقرير لوحة التحكم - تسجيلات دخول المسؤولين

هذا هو إصدار 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
4 إعجابات