# Relatório do Painel - Logins de Administrador

**URL:** <https://meta.discourse.org/t/dashboard-report-admin-logins/288873>\
**Category:** Data & reporting\
**Tags:** sql-query, dashboard-reports, dashboard-sql\
**Created:** [15 Dezembro , 2023 22:00 UTC](https://meta.discourse.org/t/dashboard-report-admin-logins/288873 "2023-12-15T22:00:44Z")\
**Posts on this page:** 1\
**Showing post:** 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:** [15 Dezembro , 2023 22:00 UTC](https://meta.discourse.org/t/dashboard-report-admin-logins/288873/1 "2023-12-15T22:00:44Z")

</div>

Este é um relatório de painel em versão SQL para logins de administradores.

Este relatório fornece uma visão geral da atividade de login de administradores dentro de um intervalo de datas especificado e ajuda a rastrear quando e de quais endereços IP os administradores fizeram login no 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

```

### Explicação da Consulta SQL

A consulta SQL foi projetada para recuperar uma lista de eventos de login exclusivos para administradores. Ela filtra e exibe os dados com base nos seguintes critérios:

- **Parâmetros** : A consulta aceita dois parâmetros, `:start_date` e `:end_date`, para especificar o período para o qual os dados de login são necessários. Ambos os parâmetros de data aceitam o formato de data `AAAA-MM-DD`.
- **Logins Distintos** : Ela usa uma subconsulta (`t1`) com `SELECT DISTINCT ON` para garantir que cada combinação de `client_ip` e `user_id` seja exclusiva, fornecendo efetivamente o evento de login mais recente para cada administrador em cada endereço IP dentro do intervalo de datas.
- **Filtro de Administrador** : A consulta procura especificamente por usuários com o sinalizador `admin` definido como `TRUE`, concentrando-se apenas em contas de administrador.
- **Junção com Usuários** : A subconsulta é unida novamente à tabela `users` para buscar os nomes de usuário correspondentes para os IDs de usuário.
- **Ordenação** : Os resultados são ordenados pelo carimbo de data/hora `login_at` em ordem decrescente, mostrando primeiro os eventos de login de administrador mais recentes.

As colunas de saída são as seguintes:

- `user_id`: O ID exclusivo do administrador que fez login.
- `username`: O nome de usuário do administrador que fez login.
- `location`: O endereço IP de onde o administrador fez login.
- `login_at`: O carimbo de data/hora de quando o administrador fez login.

Este relatório é valioso para fins de segurança e auditoria, garantindo que todos os logins de administradores sejam monitorados e registrados.

### Exemplo de Resultados

| 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 |
| … | … | … | … |

---

_[View the full topic](https://meta.discourse.org/t/dashboard-report-admin-logins/288873)._
