@@ -17,6 +17,7 @@ import (
17
17
"golang.org/x/xerrors"
18
18
19
19
"cdr.dev/slog"
20
+ "github.com/coder/coder/coderd/audit"
20
21
"github.com/coder/coder/coderd/database"
21
22
"github.com/coder/coder/coderd/httpapi"
22
23
"github.com/coder/coder/coderd/httpmw"
@@ -147,6 +148,9 @@ func (api *API) generateFakeAuditLog(rw http.ResponseWriter, r *http.Request) {
147
148
if params .Time .IsZero () {
148
149
params .Time = time .Now ()
149
150
}
151
+ if len (params .AdditionalFields ) == 0 {
152
+ params .AdditionalFields = json .RawMessage ("{}" )
153
+ }
150
154
151
155
_ , err = api .Database .InsertAuditLog (ctx , database.InsertAuditLogParams {
152
156
ID : uuid .New (),
@@ -160,7 +164,7 @@ func (api *API) generateFakeAuditLog(rw http.ResponseWriter, r *http.Request) {
160
164
Action : database .AuditAction (params .Action ),
161
165
Diff : diff ,
162
166
StatusCode : http .StatusOK ,
163
- AdditionalFields : [] byte ( "{}" ) ,
167
+ AdditionalFields : params . AdditionalFields ,
164
168
})
165
169
if err != nil {
166
170
httpapi .InternalServerError (rw , err )
@@ -180,12 +184,6 @@ func (api *API) convertAuditLogs(ctx context.Context, dblogs []database.GetAudit
180
184
return alogs
181
185
}
182
186
183
- type AdditionalFields struct {
184
- WorkspaceName string `json:"workspace_name"`
185
- BuildNumber string `json:"build_number"`
186
- BuildReason database.BuildReason `json:"build_reason"`
187
- }
188
-
189
187
func (api * API ) convertAuditLog (ctx context.Context , dblog database.GetAuditLogsOffsetRow ) codersdk.AuditLog {
190
188
ip , _ := netip .AddrFromSlice (dblog .Ip .IPNet .IP )
191
189
@@ -213,16 +211,18 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
213
211
214
212
var (
215
213
additionalFieldsBytes = []byte (dblog .AdditionalFields )
216
- additionalFields AdditionalFields
214
+ additionalFields audit. AdditionalFields
217
215
err = json .Unmarshal (additionalFieldsBytes , & additionalFields )
218
216
)
219
217
if err != nil {
220
218
api .Logger .Error (ctx , "unmarshal additional fields" , slog .Error (err ))
221
- resourceInfo := map [string ]string {
222
- "workspaceName" : "unknown" ,
223
- "buildNumber" : "unknown" ,
224
- "buildReason" : "unknown" ,
219
+ resourceInfo := audit.AdditionalFields {
220
+ WorkspaceName : "unknown" ,
221
+ BuildNumber : "unknown" ,
222
+ BuildReason : "unknown" ,
223
+ WorkspaceOwner : "unknown" ,
225
224
}
225
+
226
226
dblog .AdditionalFields , err = json .Marshal (resourceInfo )
227
227
api .Logger .Error (ctx , "marshal additional fields" , slog .Error (err ))
228
228
}
@@ -259,7 +259,7 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
259
259
}
260
260
}
261
261
262
- func auditLogDescription (alog database.GetAuditLogsOffsetRow , additionalFields AdditionalFields ) string {
262
+ func auditLogDescription (alog database.GetAuditLogsOffsetRow , additionalFields audit. AdditionalFields ) string {
263
263
str := fmt .Sprintf ("{user} %s" ,
264
264
codersdk .AuditAction (alog .Action ).Friendly (),
265
265
)
@@ -344,14 +344,16 @@ func (api *API) auditLogIsResourceDeleted(ctx context.Context, alog database.Get
344
344
}
345
345
}
346
346
347
- func (api * API ) auditLogResourceLink (ctx context.Context , alog database.GetAuditLogsOffsetRow , additionalFields AdditionalFields ) string {
347
+ func (api * API ) auditLogResourceLink (ctx context.Context , alog database.GetAuditLogsOffsetRow , additionalFields audit. AdditionalFields ) string {
348
348
switch alog .ResourceType {
349
349
case database .ResourceTypeTemplate :
350
350
return fmt .Sprintf ("/templates/%s" ,
351
351
alog .ResourceTarget )
352
+
352
353
case database .ResourceTypeUser :
353
354
return fmt .Sprintf ("/users?filter=%s" ,
354
355
alog .ResourceTarget )
356
+
355
357
case database .ResourceTypeWorkspace :
356
358
workspace , getWorkspaceErr := api .Database .GetWorkspaceByID (ctx , alog .ResourceID )
357
359
if getWorkspaceErr != nil {
@@ -363,6 +365,7 @@ func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAudit
363
365
}
364
366
return fmt .Sprintf ("/@%s/%s" ,
365
367
workspaceOwner .Username , alog .ResourceTarget )
368
+
366
369
case database .ResourceTypeWorkspaceBuild :
367
370
if len (additionalFields .WorkspaceName ) == 0 || len (additionalFields .BuildNumber ) == 0 {
368
371
return ""
@@ -381,6 +384,7 @@ func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAudit
381
384
}
382
385
return fmt .Sprintf ("/@%s/%s/builds/%s" ,
383
386
workspaceOwner .Username , additionalFields .WorkspaceName , additionalFields .BuildNumber )
387
+
384
388
default :
385
389
return ""
386
390
}
0 commit comments