From 28291336e3de78527f69f1701338bdff7e449ee4 Mon Sep 17 00:00:00 2001 From: TzeYiing Date: Tue, 2 May 2023 02:38:17 +0900 Subject: [PATCH] fix: update auth logs filtering to use metadata keys. --- .../Settings/Logs/Logs.constants.ts | 26 +++++++++---------- .../interfaces/Settings/Logs/Logs.utils.ts | 9 ++++++- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/studio/components/interfaces/Settings/Logs/Logs.constants.ts b/studio/components/interfaces/Settings/Logs/Logs.constants.ts index 4801a389379..950c9c18320 100644 --- a/studio/components/interfaces/Settings/Logs/Logs.constants.ts +++ b/studio/components/interfaces/Settings/Logs/Logs.constants.ts @@ -278,19 +278,19 @@ export const SQL_FILTER_TEMPLATES: any = { }, auth_logs: { ..._SQL_FILTER_COMMON, - 'severity.error': `REGEXP_CONTAINS(event_message, "level.{3}error|level.{3}fatal")`, - 'severity.warning': `REGEXP_CONTAINS(event_message, "level.{3}warning")`, - 'severity.info': `REGEXP_CONTAINS(event_message, "level.{3}info")`, - 'status_code.server_error': `REGEXP_CONTAINS(event_message, "status.{3}5[0-9]{2}")`, - 'status_code.client_error': `REGEXP_CONTAINS(event_message, "status.{3}4[0-9]{2}")`, - 'status_code.redirection': `REGEXP_CONTAINS(event_message, "status.{3}3[0-9]{2}")`, - 'status_code.success': `REGEXP_CONTAINS(event_message, "status.{3}2[0-9]{2}")`, - 'endpoints.admin': `REGEXP_CONTAINS(event_message, "path.{3}/admin")`, - 'endpoints.signup': `REGEXP_CONTAINS(event_message, "path.{3}/signup|path.{3}/invite|path.{3}/verify")`, - 'endpoints.authentication': `REGEXP_CONTAINS(event_message, "path.{3}/token|path.{3}/authorize|path.{3}/callback|path.{3}/otp|path.{3}/magiclink")`, - 'endpoints.recover': `REGEXP_CONTAINS(event_message, "path.{3}/recover")`, - 'endpoints.user': `REGEXP_CONTAINS(event_message, "path.{3}/user")`, - 'endpoints.logout': `REGEXP_CONTAINS(event_message, "path.{3}/logout")`, + 'severity.error': `metadata.level = 'error' or metadata.level = 'fatal'`, + 'severity.warning': `metadata.level = 'warning'`, + 'severity.info': `metadata.level = 'info'`, + 'status_code.server_error': `metadata.status between 500 and 599`, + 'status_code.client_error': `metadata.status between 400 and 499`, + 'status_code.redirection': `metadata.status between 300 and 399`, + 'status_code.success': `metadata.status between 200 and 299`, + 'endpoints.admin': `REGEXP_CONTAINS(metadata.path, "/admin")`, + 'endpoints.signup': `REGEXP_CONTAINS(metadata.path, "/signup|/invite|/verify")`, + 'endpoints.authentication': `REGEXP_CONTAINS(metadata.path, "/token|/authorize|/callback|/otp|/magiclink")`, + 'endpoints.recover': `REGEXP_CONTAINS(metadata.path, "/recover")`, + 'endpoints.user': `REGEXP_CONTAINS(metadata.path, "/user")`, + 'endpoints.logout': `REGEXP_CONTAINS(metadata.path, "/logout")`, }, realtime_logs: { ..._SQL_FILTER_COMMON, diff --git a/studio/components/interfaces/Settings/Logs/Logs.utils.ts b/studio/components/interfaces/Settings/Logs/Logs.utils.ts index 45d9dea510a..d60d60b8b7a 100644 --- a/studio/components/interfaces/Settings/Logs/Logs.utils.ts +++ b/studio/components/interfaces/Settings/Logs/Logs.utils.ts @@ -65,7 +65,7 @@ const getDotKeys = (obj: { [k: string]: unknown }, parent?: string): string[] => * * @returns a where statement with WHERE clause. */ -const _genWhereStatement = (table: LogsTableName, filters: Filters) => { +export const _genWhereStatement = (table: LogsTableName, filters: Filters) => { const keys = Object.keys(filters) const filterTemplates = SQL_FILTER_TEMPLATES[table] const _resolveTemplateToStatement = (dotKey: string): string | null => { @@ -150,6 +150,13 @@ export const genDefaultQuery = (table: LogsTableName, filters: Filters) => { limit 100 ` + case 'auth_logs': + return `select id, ${table}.timestamp, event_message from ${table} + cross join unnest(metadata) as metadata + ${where} + limit 100 + ` + case 'function_edge_logs': return `select id, ${table}.timestamp, event_message, response.status_code, request.method, m.function_id, m.execution_time_ms, m.deployment_id, m.version from ${table} cross join unnest(metadata) as m