Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbf85f1d

Browse files
committed
fix: fill out missing user properties to /audit
All except the organization IDs. We can add this as well if needed, butthe complaint was specifically about last_seen_at.
1 parent3a1fa04 commitbf85f1d

File tree

5 files changed

+77
-56
lines changed

5 files changed

+77
-56
lines changed

‎coderd/audit.go

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"github.com/coder/coder/v2/coderd/database/db2sdk"
2121
"github.com/coder/coder/v2/coderd/httpapi"
2222
"github.com/coder/coder/v2/coderd/httpmw"
23-
"github.com/coder/coder/v2/coderd/rbac"
2423
"github.com/coder/coder/v2/coderd/searchquery"
2524
"github.com/coder/coder/v2/codersdk"
2625
)
@@ -182,31 +181,10 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
182181
diff:= codersdk.AuditDiff{}
183182
_=json.Unmarshal(dblog.Diff,&diff)
184183

185-
varuser*codersdk.User
186-
187-
ifdblog.UserUsername.Valid {
188-
user=&codersdk.User{
189-
ReducedUser: codersdk.ReducedUser{
190-
MinimalUser: codersdk.MinimalUser{
191-
ID:dblog.UserID,
192-
Username:dblog.UserUsername.String,
193-
AvatarURL:dblog.UserAvatarUrl.String,
194-
},
195-
Email:dblog.UserEmail.String,
196-
CreatedAt:dblog.UserCreatedAt.Time,
197-
Status:codersdk.UserStatus(dblog.UserStatus.UserStatus),
198-
},
199-
Roles: []codersdk.SlimRole{},
200-
}
201-
202-
for_,input:=rangedblog.UserRoles {
203-
roleName,_:=rbac.RoleNameFromString(input)
204-
rbacRole,_:=rbac.RoleByName(roleName)
205-
user.Roles=append(user.Roles,db2sdk.SlimRole(rbacRole))
206-
}
207-
}
208-
209184
var (
185+
// For now leaving the organization IDs blank; not sure they are useful for
186+
// the audit query anyway?
187+
user=db2sdk.User(dblog.User, []uuid.UUID{})
210188
additionalFieldsBytes= []byte(dblog.AdditionalFields)
211189
additionalFields audit.AdditionalFields
212190
err=json.Unmarshal(additionalFieldsBytes,&additionalFields)
@@ -249,7 +227,7 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
249227
Diff:diff,
250228
StatusCode:dblog.StatusCode,
251229
AdditionalFields:dblog.AdditionalFields,
252-
User:user,
230+
User:&user,
253231
Description:auditLogDescription(dblog),
254232
ResourceLink:resourceLink,
255233
IsDeleted:isDeleted,

‎coderd/audit_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import (
88
"testing"
99
"time"
1010

11+
"github.com/google/uuid"
1112
"github.com/stretchr/testify/require"
1213

1314
"github.com/coder/coder/v2/coderd/audit"
1415
"github.com/coder/coder/v2/coderd/coderdtest"
1516
"github.com/coder/coder/v2/coderd/database"
17+
"github.com/coder/coder/v2/coderd/rbac"
1618
"github.com/coder/coder/v2/codersdk"
1719
)
1820

@@ -42,6 +44,53 @@ func TestAuditLogs(t *testing.T) {
4244
require.Len(t,alogs.AuditLogs,1)
4345
})
4446

47+
t.Run("User",func(t*testing.T) {
48+
t.Parallel()
49+
50+
ctx:=context.Background()
51+
client:=coderdtest.New(t,nil)
52+
user:=coderdtest.CreateFirstUser(t,client)
53+
client2,user2:=coderdtest.CreateAnotherUser(t,client,user.OrganizationID,rbac.RoleOwner())
54+
55+
err:=client2.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
56+
ResourceID:user2.ID,
57+
})
58+
require.NoError(t,err)
59+
60+
alogs,err:=client.AuditLogs(ctx, codersdk.AuditLogsRequest{
61+
Pagination: codersdk.Pagination{
62+
Limit:1,
63+
},
64+
})
65+
require.NoError(t,err)
66+
require.Equal(t,int64(1),alogs.Count)
67+
require.Len(t,alogs.AuditLogs,1)
68+
69+
// Make sure the returned user is fully populated.
70+
foundUser,err:=client.User(ctx,user2.ID.String())
71+
foundUser.OrganizationIDs= []uuid.UUID{}// Not included.
72+
require.NoError(t,err)
73+
require.Equal(t,foundUser,*alogs.AuditLogs[0].User)
74+
75+
// Delete the user and try again.
76+
err=client.DeleteUser(ctx,user2.ID)
77+
require.NoError(t,err)
78+
79+
alogs,err=client.AuditLogs(ctx, codersdk.AuditLogsRequest{
80+
Pagination: codersdk.Pagination{
81+
Limit:1,
82+
},
83+
})
84+
require.NoError(t,err)
85+
require.Equal(t,int64(1),alogs.Count)
86+
require.Len(t,alogs.AuditLogs,1)
87+
88+
foundUser,err=client.User(ctx,user2.ID.String())
89+
foundUser.OrganizationIDs= []uuid.UUID{}// Not included.
90+
require.NoError(t,err)
91+
require.Equal(t,foundUser,*alogs.AuditLogs[0].User)
92+
})
93+
4594
t.Run("WorkspaceBuildAuditLink",func(t*testing.T) {
4695
t.Parallel()
4796

‎coderd/database/dbmem/dbmem.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1947,8 +1947,12 @@ func (q *FakeQuerier) GetAuditLogsOffset(_ context.Context, arg database.GetAudi
19471947
}
19481948
}
19491949

1950+
// The query is a left join, so allow no user here, although this probably
1951+
// does not happen in practice since users are soft deleted?
19501952
user,err:=q.getUserByIDNoLock(alog.UserID)
1951-
userValid:=err==nil
1953+
iferr!=nil&&!errors.Is(err,sql.ErrNoRows) {
1954+
returnlogs,err
1955+
}
19521956

19531957
logs=append(logs, database.GetAuditLogsOffsetRow{
19541958
ID:alog.ID,
@@ -1965,11 +1969,7 @@ func (q *FakeQuerier) GetAuditLogsOffset(_ context.Context, arg database.GetAudi
19651969
StatusCode:alog.StatusCode,
19661970
AdditionalFields:alog.AdditionalFields,
19671971
UserID:alog.UserID,
1968-
UserUsername: sql.NullString{String:user.Username,Valid:userValid},
1969-
UserEmail: sql.NullString{String:user.Email,Valid:userValid},
1970-
UserCreatedAt: sql.NullTime{Time:user.CreatedAt,Valid:userValid},
1971-
UserStatus: database.NullUserStatus{UserStatus:user.Status,Valid:userValid},
1972-
UserRoles:user.RBACRoles,
1972+
User:user,
19731973
Count:0,
19741974
})
19751975

‎coderd/database/queries.sql.go

Lines changed: 17 additions & 18 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/auditlogs.sql

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@
33
-- name: GetAuditLogsOffset :many
44
SELECT
55
audit_logs.*,
6-
users.usernameAS user_username,
7-
users.emailAS user_email,
8-
users.created_atAS user_created_at,
9-
users.statusAS user_status,
10-
users.rbac_rolesAS user_roles,
11-
users.avatar_urlAS user_avatar_url,
6+
sqlc.embed(users),
127
COUNT(audit_logs.*) OVER ()AS count
138
FROM
149
audit_logs

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp