Skip to content

Commit 9041646

Browse files
authored
chore: add "user_configs" db table (#16564)
1 parent cc946f1 commit 9041646

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+784
-392
lines changed

cli/testdata/coder_users_list_--output_json.golden

-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
"last_seen_at": "====[timestamp]=====",
1111
"status": "active",
1212
"login_type": "password",
13-
"theme_preference": "",
1413
"organization_ids": [
1514
"===========[first org ID]==========="
1615
],
@@ -32,7 +31,6 @@
3231
"last_seen_at": "====[timestamp]=====",
3332
"status": "dormant",
3433
"login_type": "password",
35-
"theme_preference": "",
3634
"organization_ids": [
3735
"===========[first org ID]==========="
3836
],

coderd/apidoc/docs.go

+44-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

+40-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/audit.go

-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ func (api *API) convertAuditLog(ctx context.Context, dblog database.GetAuditLogs
204204
Deleted: dblog.UserDeleted.Bool,
205205
LastSeenAt: dblog.UserLastSeenAt.Time,
206206
QuietHoursSchedule: dblog.UserQuietHoursSchedule.String,
207-
ThemePreference: dblog.UserThemePreference.String,
208207
Name: dblog.UserName.String,
209208
}, []uuid.UUID{})
210209
user = &sdkUser

coderd/coderd.go

+1
Original file line numberDiff line numberDiff line change
@@ -1145,6 +1145,7 @@ func New(options *Options) *API {
11451145
r.Put("/suspend", api.putSuspendUserAccount())
11461146
r.Put("/activate", api.putActivateUserAccount())
11471147
})
1148+
r.Get("/appearance", api.userAppearanceSettings)
11481149
r.Put("/appearance", api.putUserAppearanceSettings)
11491150
r.Route("/password", func(r chi.Router) {
11501151
r.Use(httpmw.RateLimit(options.LoginRateLimit, time.Minute))

coderd/database/db2sdk/db2sdk.go

+7-9
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,13 @@ func ReducedUser(user database.User) codersdk.ReducedUser {
150150
Username: user.Username,
151151
AvatarURL: user.AvatarURL,
152152
},
153-
Email: user.Email,
154-
Name: user.Name,
155-
CreatedAt: user.CreatedAt,
156-
UpdatedAt: user.UpdatedAt,
157-
LastSeenAt: user.LastSeenAt,
158-
Status: codersdk.UserStatus(user.Status),
159-
LoginType: codersdk.LoginType(user.LoginType),
160-
ThemePreference: user.ThemePreference,
153+
Email: user.Email,
154+
Name: user.Name,
155+
CreatedAt: user.CreatedAt,
156+
UpdatedAt: user.UpdatedAt,
157+
LastSeenAt: user.LastSeenAt,
158+
Status: codersdk.UserStatus(user.Status),
159+
LoginType: codersdk.LoginType(user.LoginType),
161160
}
162161
}
163162

@@ -176,7 +175,6 @@ func UserFromGroupMember(member database.GroupMember) database.User {
176175
Deleted: member.UserDeleted,
177176
LastSeenAt: member.UserLastSeenAt,
178177
QuietHoursSchedule: member.UserQuietHoursSchedule,
179-
ThemePreference: member.UserThemePreference,
180178
Name: member.UserName,
181179
GithubComUserID: member.UserGithubComUserID,
182180
}

coderd/database/dbauthz/dbauthz.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -2510,6 +2510,17 @@ func (q *querier) GetUserActivityInsights(ctx context.Context, arg database.GetU
25102510
return q.db.GetUserActivityInsights(ctx, arg)
25112511
}
25122512

2513+
func (q *querier) GetUserAppearanceSettings(ctx context.Context, userID uuid.UUID) (string, error) {
2514+
u, err := q.db.GetUserByID(ctx, userID)
2515+
if err != nil {
2516+
return "", err
2517+
}
2518+
if err := q.authorizeContext(ctx, policy.ActionReadPersonal, u); err != nil {
2519+
return "", err
2520+
}
2521+
return q.db.GetUserAppearanceSettings(ctx, userID)
2522+
}
2523+
25132524
func (q *querier) GetUserByEmailOrUsername(ctx context.Context, arg database.GetUserByEmailOrUsernameParams) (database.User, error) {
25142525
return fetch(q.log, q.auth, q.db.GetUserByEmailOrUsername)(ctx, arg)
25152526
}
@@ -4021,13 +4032,13 @@ func (q *querier) UpdateTemplateWorkspacesLastUsedAt(ctx context.Context, arg da
40214032
return fetchAndExec(q.log, q.auth, policy.ActionUpdate, fetch, q.db.UpdateTemplateWorkspacesLastUsedAt)(ctx, arg)
40224033
}
40234034

4024-
func (q *querier) UpdateUserAppearanceSettings(ctx context.Context, arg database.UpdateUserAppearanceSettingsParams) (database.User, error) {
4025-
u, err := q.db.GetUserByID(ctx, arg.ID)
4035+
func (q *querier) UpdateUserAppearanceSettings(ctx context.Context, arg database.UpdateUserAppearanceSettingsParams) (database.UserConfig, error) {
4036+
u, err := q.db.GetUserByID(ctx, arg.UserID)
40264037
if err != nil {
4027-
return database.User{}, err
4038+
return database.UserConfig{}, err
40284039
}
40294040
if err := q.authorizeContext(ctx, policy.ActionUpdatePersonal, u); err != nil {
4030-
return database.User{}, err
4041+
return database.UserConfig{}, err
40314042
}
40324043
return q.db.UpdateUserAppearanceSettings(ctx, arg)
40334044
}

coderd/database/dbauthz/dbauthz_test.go

+17-4
Original file line numberDiff line numberDiff line change
@@ -1522,13 +1522,26 @@ func (s *MethodTestSuite) TestUser() {
15221522
[]database.GetUserWorkspaceBuildParametersRow{},
15231523
)
15241524
}))
1525+
s.Run("GetUserAppearanceSettings", s.Subtest(func(db database.Store, check *expects) {
1526+
ctx := context.Background()
1527+
u := dbgen.User(s.T(), db, database.User{})
1528+
db.UpdateUserAppearanceSettings(ctx, database.UpdateUserAppearanceSettingsParams{
1529+
UserID: u.ID,
1530+
ThemePreference: "light",
1531+
})
1532+
check.Args(u.ID).Asserts(u, policy.ActionReadPersonal).Returns("light")
1533+
}))
15251534
s.Run("UpdateUserAppearanceSettings", s.Subtest(func(db database.Store, check *expects) {
15261535
u := dbgen.User(s.T(), db, database.User{})
1536+
uc := database.UserConfig{
1537+
UserID: u.ID,
1538+
Key: "theme_preference",
1539+
Value: "dark",
1540+
}
15271541
check.Args(database.UpdateUserAppearanceSettingsParams{
1528-
ID: u.ID,
1529-
ThemePreference: u.ThemePreference,
1530-
UpdatedAt: u.UpdatedAt,
1531-
}).Asserts(u, policy.ActionUpdatePersonal).Returns(u)
1542+
UserID: u.ID,
1543+
ThemePreference: uc.Value,
1544+
}).Asserts(u, policy.ActionUpdatePersonal).Returns(uc)
15321545
}))
15331546
s.Run("UpdateUserStatus", s.Subtest(func(db database.Store, check *expects) {
15341547
u := dbgen.User(s.T(), db, database.User{})

coderd/database/dbgen/dbgen.go

-1
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,6 @@ func GroupMember(t testing.TB, db database.Store, member database.GroupMemberTab
528528
UserDeleted: user.Deleted,
529529
UserLastSeenAt: user.LastSeenAt,
530530
UserQuietHoursSchedule: user.QuietHoursSchedule,
531-
UserThemePreference: user.ThemePreference,
532531
UserName: user.Name,
533532
UserGithubComUserID: user.GithubComUserID,
534533
OrganizationID: group.OrganizationID,

0 commit comments

Comments
 (0)