Relatório do Painel - Logins de Administrador

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_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
4 curtidas