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

Lines changed: 0 additions & 2 deletions
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

Lines changed: 44 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 40 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/audit.go

Lines changed: 0 additions & 1 deletion
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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 7 additions & 9 deletions
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

Lines changed: 15 additions & 4 deletions
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

Lines changed: 17 additions & 4 deletions
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

Lines changed: 0 additions & 1 deletion
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)
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