Skip to content

Commit b94d2cb

Browse files
authored
fix(coderd): handle deletes and links for new agent/app audit resources (#16670)
These code-paths were overlooked in #16493.
1 parent f1b357d commit b94d2cb

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

coderd/audit.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,26 @@ func (api *API) auditLogIsResourceDeleted(ctx context.Context, alog database.Get
367367
api.Logger.Error(ctx, "unable to fetch workspace", slog.Error(err))
368368
}
369369
return workspace.Deleted
370+
case database.ResourceTypeWorkspaceAgent:
371+
// We use workspace as a proxy for workspace agents.
372+
workspace, err := api.Database.GetWorkspaceByAgentID(ctx, alog.AuditLog.ResourceID)
373+
if err != nil {
374+
if xerrors.Is(err, sql.ErrNoRows) {
375+
return true
376+
}
377+
api.Logger.Error(ctx, "unable to fetch workspace", slog.Error(err))
378+
}
379+
return workspace.Deleted
380+
case database.ResourceTypeWorkspaceApp:
381+
// We use workspace as a proxy for workspace apps.
382+
workspace, err := api.Database.GetWorkspaceByWorkspaceAppID(ctx, alog.AuditLog.ResourceID)
383+
if err != nil {
384+
if xerrors.Is(err, sql.ErrNoRows) {
385+
return true
386+
}
387+
api.Logger.Error(ctx, "unable to fetch workspace", slog.Error(err))
388+
}
389+
return workspace.Deleted
370390
case database.ResourceTypeOauth2ProviderApp:
371391
_, err := api.Database.GetOAuth2ProviderAppByID(ctx, alog.AuditLog.ResourceID)
372392
if xerrors.Is(err, sql.ErrNoRows) {
@@ -429,6 +449,26 @@ func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAudit
429449
return fmt.Sprintf("/@%s/%s/builds/%s",
430450
workspaceOwner.Username, additionalFields.WorkspaceName, additionalFields.BuildNumber)
431451

452+
case database.ResourceTypeWorkspaceAgent:
453+
if additionalFields.WorkspaceOwner != "" && additionalFields.WorkspaceName != "" {
454+
return fmt.Sprintf("/@%s/%s", additionalFields.WorkspaceOwner, additionalFields.WorkspaceName)
455+
}
456+
workspace, getWorkspaceErr := api.Database.GetWorkspaceByAgentID(ctx, alog.AuditLog.ResourceID)
457+
if getWorkspaceErr != nil {
458+
return ""
459+
}
460+
return fmt.Sprintf("/@%s/%s", workspace.OwnerUsername, workspace.Name)
461+
462+
case database.ResourceTypeWorkspaceApp:
463+
if additionalFields.WorkspaceOwner != "" && additionalFields.WorkspaceName != "" {
464+
return fmt.Sprintf("/@%s/%s", additionalFields.WorkspaceOwner, additionalFields.WorkspaceName)
465+
}
466+
workspace, getWorkspaceErr := api.Database.GetWorkspaceByWorkspaceAppID(ctx, alog.AuditLog.ResourceID)
467+
if getWorkspaceErr != nil {
468+
return ""
469+
}
470+
return fmt.Sprintf("/@%s/%s", workspace.OwnerUsername, workspace.Name)
471+
432472
case database.ResourceTypeOauth2ProviderApp:
433473
return fmt.Sprintf("/deployment/oauth2-provider/apps/%s", alog.AuditLog.ResourceID)
434474

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