# 仪表盘报告 - 管理员登录

**URL:** https://meta.discourse.org/t/dashboard-report-admin-logins/288873
**Category:** Data & reporting
**Tags:** sql-query, dashboard-reports, dashboard-sql
**Created:** [2023年十二月15日 22:00 UTC](https://meta.discourse.org/t/dashboard-report-admin-logins/288873 "2023-12-15T22:00:44Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![SaraDev](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saradev/32/335139_2.png) [@SaraDev](https://meta.discourse.org/u/SaraDev)
#### Post date: [2023年十二月15日 22:00 UTC](https://meta.discourse.org/t/dashboard-report-admin-logins/288873/1 "2023-12-15T22:00:44Z")

</div>

这是管理员登录的仪表板报告的 SQL 版本。

本报告提供了指定日期范围内管理员登录活动的概述，并有助于跟踪管理员何时以及从哪个 IP 地址登录到 Discourse。

```sql
--[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_ip` 和 `user_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 |
| … | … | … | … |
