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.
--[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_datee: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 dataAAAA-MM-DD. - Logins Distintos: Ela usa uma subconsulta (
t1) comSELECT DISTINCT ONpara garantir que cada combinação declient_ipeuser_idseja 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
admindefinido comoTRUE, concentrando-se apenas em contas de administrador. - Junção com Usuários: A subconsulta é unida novamente à tabela
userspara 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_atem 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 |
| … | … | … | … |