仪表盘报告 - 管理员登录

这是管理员登录的仪表板报告的 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 格式的日期。
  • 唯一登录:它使用带有 SELECT DISTINCT ON 的子查询(t1)来确保 client_ipuser_id 的每个组合都是唯一的,从而有效地在指定日期范围内为每个 IP 地址的每个管理员提供最近的登录事件。
  • 管理员筛选:该查询专门查找 admin 标志设置为 TRUE 的用户,仅关注管理员帐户。
  • 与 Users 表联接:子查询重新联接到 users 表,以获取相应用户 ID 的用户名。
  • 排序:结果按 login_at 时间戳降序排序,首先显示最近的管理员登录事件。

输出列如下:

  • user_id:登录管理员的唯一 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 个赞