Skip to content

Add audit links/kira pilot #5156

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Dec 2, 2022
Prev Previous commit
Next Next commit
PR feedback part 2
  • Loading branch information
Kira-Pilot committed Dec 2, 2022
commit 6465f3e1d425d4aa7f59e0cfc09874022bb0f6a7
31 changes: 15 additions & 16 deletions coderd/audit.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,14 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
}
}

isDeleted := api.auditLogIsResourceDeleted(ctx, dblog)
var resourceLink string
if isDeleted {
resourceLink = ""
} else {
resourceLink = api.auditLogResourceLink(ctx, dblog)
}

return codersdk.AuditLog{
ID: dblog.ID,
RequestID: dblog.RequestID,
Expand All @@ -202,8 +210,8 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
AdditionalFields: dblog.AdditionalFields,
User: user,
Description: auditLogDescription(dblog),
ResourceLink: api.auditLogResourceLink(ctx, dblog),
IsDeleted: api.auditLogIsResourceDeleted(ctx, dblog),
ResourceLink: resourceLink,
IsDeleted: isDeleted,
}
}

Expand Down Expand Up @@ -243,48 +251,43 @@ func (api *API) auditLogIsResourceDeleted(ctx context.Context, alog database.Get
if err != nil {
if xerrors.Is(err, sql.ErrNoRows) {
return true
} else {
api.Logger.Error(ctx, "fetch template", slog.Error(err))
}
api.Logger.Error(ctx, "fetch template", slog.Error(err))
}
return template.Deleted
case database.ResourceTypeUser:
user, err := api.Database.GetUserByID(ctx, alog.ResourceID)
if err != nil {
if xerrors.Is(err, sql.ErrNoRows) {
return true
} else {
api.Logger.Error(ctx, "fetch user", slog.Error(err))
}
api.Logger.Error(ctx, "fetch user", slog.Error(err))
}
return user.Deleted
case database.ResourceTypeWorkspace:
workspace, err := api.Database.GetWorkspaceByID(ctx, alog.ResourceID)
if err != nil {
if xerrors.Is(err, sql.ErrNoRows) {
return true
} else {
api.Logger.Error(ctx, "fetch workspace", slog.Error(err))
}
api.Logger.Error(ctx, "fetch workspace", slog.Error(err))
}
return workspace.Deleted
case database.ResourceTypeWorkspaceBuild:
workspaceBuild, err := api.Database.GetWorkspaceBuildByID(ctx, alog.ResourceID)
if err != nil {
if xerrors.Is(err, sql.ErrNoRows) {
return true
} else {
api.Logger.Error(ctx, "fetch workspace build", slog.Error(err))
}
api.Logger.Error(ctx, "fetch workspace build", slog.Error(err))
}
// We use workspace as a proxy for workspace build here
workspace, err := api.Database.GetWorkspaceByID(ctx, workspaceBuild.WorkspaceID)
if err != nil {
if xerrors.Is(err, sql.ErrNoRows) {
return true
} else {
api.Logger.Error(ctx, "fetch workspace", slog.Error(err))
}
api.Logger.Error(ctx, "fetch workspace", slog.Error(err))
}
return workspace.Deleted
default:
Expand All @@ -298,10 +301,6 @@ type AdditionalFields struct {
}

func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAuditLogsOffsetRow) string {
if api.auditLogIsResourceDeleted(ctx, alog) {
return ""
}

switch alog.ResourceType {
case database.ResourceTypeTemplate:
return fmt.Sprintf("/templates/%s",
Expand Down
6 changes: 6 additions & 0 deletions site/src/components/AuditLogRow/AuditLogRow.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
MockAuditLog,
MockAuditLog2,
MockAuditLogWithWorkspaceBuild,
MockAuditLogWithDeletedResource,
} from "testHelpers/entities"
import { AuditLogRow, AuditLogRowProps } from "./AuditLogRow"

Expand Down Expand Up @@ -66,3 +67,8 @@ export const WithWorkspaceBuild = Template.bind({})
WithWorkspaceBuild.args = {
auditLog: MockAuditLogWithWorkspaceBuild,
}

export const DeletedResource = Template.bind({})
DeletedResource.args = {
auditLog: MockAuditLogWithDeletedResource,
}
7 changes: 6 additions & 1 deletion site/src/testHelpers/entities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -961,7 +961,7 @@ export const MockAuditLog: TypesGen.AuditLog = {
additional_fields: {},
description: "{user} created workspace {target}",
user: MockUser,
resource_link: "",
resource_link: "/@admin/bruno-dev",
is_deleted: false,
}

Expand Down Expand Up @@ -1007,6 +1007,11 @@ export const MockAuditLogWithWorkspaceBuild: TypesGen.AuditLog = {
},
}

export const MockAuditLogWithDeletedResource: TypesGen.AuditLog = {
...MockAuditLog,
is_deleted: true,
}

export const MockWorkspaceQuota: TypesGen.WorkspaceQuota = {
credits_consumed: 0,
budget: 100,
Expand Down