Skip to content

Commit 493ffa7

Browse files
committed
fix me filter
1 parent 9717985 commit 493ffa7

File tree

3 files changed

+68
-46
lines changed

3 files changed

+68
-46
lines changed

coderd/searchquery/search.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func AuditLogs(ctx context.Context, db database.Store, query string) (database.G
6767
return filter, parser.Errors
6868
}
6969

70-
func ConnectionLogs(ctx context.Context, db database.Store, query string) (database.GetConnectionLogsOffsetParams, []codersdk.ValidationError) {
70+
func ConnectionLogs(ctx context.Context, db database.Store, query string, apiKey database.APIKey) (database.GetConnectionLogsOffsetParams, []codersdk.ValidationError) {
7171
// Always lowercase for all searches.
7272
query = strings.ToLower(query)
7373
values, errors := searchTerms(query, func(term string, values url.Values) error {
@@ -92,6 +92,17 @@ func ConnectionLogs(ctx context.Context, db database.Store, query string) (datab
9292
ConnectionID: parser.UUID(values, uuid.Nil, "connection_id"),
9393
Status: string(httpapi.ParseCustom(parser, values, "", "status", httpapi.ParseEnum[database.ConnectionStatus])),
9494
}
95+
96+
if filter.Username == "me" {
97+
filter.UserID = apiKey.UserID
98+
filter.Username = ""
99+
}
100+
101+
if filter.WorkspaceOwner == "me" {
102+
filter.WorkspaceOwnerID = apiKey.UserID
103+
filter.WorkspaceOwner = ""
104+
}
105+
95106
parser.ErrorExcessParams(values)
96107
return filter, parser.Errors
97108
}

coderd/searchquery/search_test.go

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -405,47 +405,68 @@ func TestSearchAudit(t *testing.T) {
405405

406406
func TestSearchConnectionLogs(t *testing.T) {
407407
t.Parallel()
408+
t.Run("All", func(t *testing.T) {
409+
t.Parallel()
408410

409-
orgID := uuid.New()
410-
workspaceOwnerID := uuid.New()
411-
workspaceID := uuid.New()
412-
connectionID := uuid.New()
411+
orgID := uuid.New()
412+
workspaceOwnerID := uuid.New()
413+
workspaceID := uuid.New()
414+
connectionID := uuid.New()
413415

414-
db, _ := dbtestutil.NewDB(t)
415-
dbgen.Organization(t, db, database.Organization{
416-
ID: orgID,
417-
Name: "testorg",
418-
})
419-
dbgen.User(t, db, database.User{
420-
ID: workspaceOwnerID,
421-
Username: "testowner",
422-
Email: "owner@example.com",
416+
db, _ := dbtestutil.NewDB(t)
417+
dbgen.Organization(t, db, database.Organization{
418+
ID: orgID,
419+
Name: "testorg",
420+
})
421+
dbgen.User(t, db, database.User{
422+
ID: workspaceOwnerID,
423+
Username: "testowner",
424+
Email: "owner@example.com",
425+
})
426+
427+
query := fmt.Sprintf(`organization:testorg workspace_owner:testowner `+
428+
`workspace_owner_email:owner@example.com type:port_forwarding username:testuser `+
429+
`user_email:test@example.com started_after:"2023-01-01T00:00:00Z" `+
430+
`started_before:"2023-01-16T12:00:00+12:00" workspace_id:%s connection_id:%s status:connected`,
431+
workspaceID.String(), connectionID.String())
432+
433+
values, errs := searchquery.ConnectionLogs(context.Background(), db, query, database.APIKey{})
434+
require.Len(t, errs, 0)
435+
436+
expected := database.GetConnectionLogsOffsetParams{
437+
OrganizationID: orgID,
438+
WorkspaceOwner: "testowner",
439+
WorkspaceOwnerEmail: "owner@example.com",
440+
Type: string(database.ConnectionTypePortForwarding),
441+
Username: "testuser",
442+
UserEmail: "test@example.com",
443+
StartedAfter: time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC),
444+
StartedBefore: time.Date(2023, 1, 16, 0, 0, 0, 0, time.UTC),
445+
WorkspaceID: workspaceID,
446+
ConnectionID: connectionID,
447+
Status: string(database.ConnectionStatusConnected),
448+
}
449+
450+
require.Equal(t, expected, values)
423451
})
424452

425-
query := fmt.Sprintf(`organization:testorg workspace_owner:testowner `+
426-
`workspace_owner_email:owner@example.com type:port_forwarding username:testuser `+
427-
`user_email:test@example.com started_after:"2023-01-01T00:00:00Z" `+
428-
`started_before:"2023-01-16T12:00:00+12:00" workspace_id:%s connection_id:%s status:connected`,
429-
workspaceID.String(), connectionID.String())
453+
t.Run("Me", func(t *testing.T) {
454+
t.Parallel()
455+
456+
userID := uuid.New()
457+
db, _ := dbtestutil.NewDB(t)
430458

431-
values, errs := searchquery.ConnectionLogs(context.Background(), db, query)
432-
require.Len(t, errs, 0)
459+
query := `username:me workspace_owner:me`
460+
values, errs := searchquery.ConnectionLogs(context.Background(), db, query, database.APIKey{UserID: userID})
461+
require.Len(t, errs, 0)
433462

434-
expected := database.GetConnectionLogsOffsetParams{
435-
OrganizationID: orgID,
436-
WorkspaceOwner: "testowner",
437-
WorkspaceOwnerEmail: "owner@example.com",
438-
Type: string(database.ConnectionTypePortForwarding),
439-
Username: "testuser",
440-
UserEmail: "test@example.com",
441-
StartedAfter: time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC),
442-
StartedBefore: time.Date(2023, 1, 16, 0, 0, 0, 0, time.UTC),
443-
WorkspaceID: workspaceID,
444-
ConnectionID: connectionID,
445-
Status: string(database.ConnectionStatusConnected),
446-
}
463+
expected := database.GetConnectionLogsOffsetParams{
464+
UserID: userID,
465+
WorkspaceOwnerID: userID,
466+
}
447467

448-
require.Equal(t, expected, values)
468+
require.Equal(t, expected, values)
469+
})
449470
}
450471

451472
func TestSearchUsers(t *testing.T) {

enterprise/coderd/connectionlog.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (api *API) connectionLogs(rw http.ResponseWriter, r *http.Request) {
3737
}
3838

3939
queryStr := r.URL.Query().Get("q")
40-
filter, errs := searchquery.ConnectionLogs(ctx, api.Database, queryStr)
40+
filter, errs := searchquery.ConnectionLogs(ctx, api.Database, queryStr, apiKey)
4141
if len(errs) > 0 {
4242
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
4343
Message: "Invalid connection search query.",
@@ -50,16 +50,6 @@ func (api *API) connectionLogs(rw http.ResponseWriter, r *http.Request) {
5050
// #nosec G115 - Safe conversion as pagination limit is expected to be within int32 range
5151
filter.LimitOpt = int32(page.Limit)
5252

53-
if filter.Username == "me" {
54-
filter.UserID = apiKey.UserID
55-
filter.Username = ""
56-
}
57-
58-
if filter.WorkspaceOwner == "me" {
59-
filter.WorkspaceOwnerID = apiKey.UserID
60-
filter.WorkspaceOwner = ""
61-
}
62-
6353
dblogs, err := api.Database.GetConnectionLogsOffset(ctx, filter)
6454
if dbauthz.IsNotAuthorizedError(err) {
6555
httpapi.Forbidden(rw)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy