diff --git a/coderd/audit.go b/coderd/audit.go index c9fbb3a9a8..00f1228466 100644 --- a/coderd/audit.go +++ b/coderd/audit.go @@ -259,12 +259,37 @@ func auditSearchQuery(query string) (database.GetAuditLogsOffsetParams, []coders // other parsing. parser := httpapi.NewQueryParamParser() filter := database.GetAuditLogsOffsetParams{ - ResourceType: parser.String(searchParams, "", "resource_type"), + ResourceType: resourceTypeFromString(parser.String(searchParams, "", "resource_type")), ResourceID: parser.UUID(searchParams, uuid.Nil, "resource_id"), - Action: parser.String(searchParams, "", "action"), + Action: actionFromString(parser.String(searchParams, "", "action")), Username: parser.String(searchParams, "", "username"), Email: parser.String(searchParams, "", "email"), } return filter, parser.Errors } + +func resourceTypeFromString(resourceTypeString string) string { + switch codersdk.ResourceType(resourceTypeString) { + case codersdk.ResourceTypeOrganization: + case codersdk.ResourceTypeTemplate: + case codersdk.ResourceTypeTemplateVersion: + case codersdk.ResourceTypeUser: + case codersdk.ResourceTypeWorkspace: + case codersdk.ResourceTypeGitSSHKey: + case codersdk.ResourceTypeAPIKey: + return resourceTypeString + } + return "" +} + +func actionFromString(actionString string) string { + switch codersdk.AuditAction(actionString) { + case codersdk.AuditActionCreate: + case codersdk.AuditActionWrite: + case codersdk.AuditActionDelete: + return actionString + default: + } + return "" +} diff --git a/coderd/audit_test.go b/coderd/audit_test.go index 9368746a88..be50503c72 100644 --- a/coderd/audit_test.go +++ b/coderd/audit_test.go @@ -112,6 +112,21 @@ func TestAuditLogsFilter(t *testing.T) { SearchQuery: "resource_id:" + userResourceID.String(), ExpectedResult: 2, }, + { + Name: "FilterInvalidSingleValue", + SearchQuery: "invalid", + ExpectedResult: 3, + }, + { + Name: "FilterWithInvalidResourceType", + SearchQuery: "resource_type:invalid", + ExpectedResult: 3, + }, + { + Name: "FilterWithInvalidAction", + SearchQuery: "action:invalid", + ExpectedResult: 3, + }, } for _, testCase := range testCases {