Skip to content

Commit 41359ce

Browse files
stirbyhugodutkaSasSwartspikecurtisjohnstcn
authored
chore: add cherry-picks for release 2.18 (coder#15735)
Co-authored-by: Hugo Dutka <hugo@coder.com> Co-authored-by: Sas Swart <sas.swart.cdk@gmail.com> Co-authored-by: Spike Curtis <spike@coder.com> Co-authored-by: Cian Johnston <cian@coder.com>
1 parent 45d9274 commit 41359ce

Some content is hidden

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

45 files changed

+960
-253
lines changed

coderd/database/dbauthz/dbauthz.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -3330,13 +3330,6 @@ func (q *querier) RegisterWorkspaceProxy(ctx context.Context, arg database.Regis
33303330
return updateWithReturn(q.log, q.auth, fetch, q.db.RegisterWorkspaceProxy)(ctx, arg)
33313331
}
33323332

3333-
func (q *querier) RemoveRefreshToken(ctx context.Context, arg database.RemoveRefreshTokenParams) error {
3334-
fetch := func(ctx context.Context, arg database.RemoveRefreshTokenParams) (database.ExternalAuthLink, error) {
3335-
return q.db.GetExternalAuthLink(ctx, database.GetExternalAuthLinkParams{UserID: arg.UserID, ProviderID: arg.ProviderID})
3336-
}
3337-
return fetchAndExec(q.log, q.auth, policy.ActionUpdatePersonal, fetch, q.db.RemoveRefreshToken)(ctx, arg)
3338-
}
3339-
33403333
func (q *querier) RemoveUserFromAllGroups(ctx context.Context, userID uuid.UUID) error {
33413334
// This is a system function to clear user groups in group sync.
33423335
if err := q.authorizeContext(ctx, policy.ActionUpdate, rbac.ResourceSystem); err != nil {
@@ -3435,6 +3428,13 @@ func (q *querier) UpdateExternalAuthLink(ctx context.Context, arg database.Updat
34353428
return fetchAndQuery(q.log, q.auth, policy.ActionUpdatePersonal, fetch, q.db.UpdateExternalAuthLink)(ctx, arg)
34363429
}
34373430

3431+
func (q *querier) UpdateExternalAuthLinkRefreshToken(ctx context.Context, arg database.UpdateExternalAuthLinkRefreshTokenParams) error {
3432+
fetch := func(ctx context.Context, arg database.UpdateExternalAuthLinkRefreshTokenParams) (database.ExternalAuthLink, error) {
3433+
return q.db.GetExternalAuthLink(ctx, database.GetExternalAuthLinkParams{UserID: arg.UserID, ProviderID: arg.ProviderID})
3434+
}
3435+
return fetchAndExec(q.log, q.auth, policy.ActionUpdatePersonal, fetch, q.db.UpdateExternalAuthLinkRefreshToken)(ctx, arg)
3436+
}
3437+
34383438
func (q *querier) UpdateGitSSHKey(ctx context.Context, arg database.UpdateGitSSHKeyParams) (database.GitSSHKey, error) {
34393439
fetch := func(ctx context.Context, arg database.UpdateGitSSHKeyParams) (database.GitSSHKey, error) {
34403440
return q.db.GetGitSSHKey(ctx, arg.UserID)

coderd/database/dbauthz/dbauthz_test.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -1282,12 +1282,14 @@ func (s *MethodTestSuite) TestUser() {
12821282
UserID: u.ID,
12831283
}).Asserts(u, policy.ActionUpdatePersonal)
12841284
}))
1285-
s.Run("RemoveRefreshToken", s.Subtest(func(db database.Store, check *expects) {
1285+
s.Run("UpdateExternalAuthLinkRefreshToken", s.Subtest(func(db database.Store, check *expects) {
12861286
link := dbgen.ExternalAuthLink(s.T(), db, database.ExternalAuthLink{})
1287-
check.Args(database.RemoveRefreshTokenParams{
1288-
ProviderID: link.ProviderID,
1289-
UserID: link.UserID,
1290-
UpdatedAt: link.UpdatedAt,
1287+
check.Args(database.UpdateExternalAuthLinkRefreshTokenParams{
1288+
OAuthRefreshToken: "",
1289+
OAuthRefreshTokenKeyID: "",
1290+
ProviderID: link.ProviderID,
1291+
UserID: link.UserID,
1292+
UpdatedAt: link.UpdatedAt,
12911293
}).Asserts(rbac.ResourceUserObject(link.UserID), policy.ActionUpdatePersonal)
12921294
}))
12931295
s.Run("UpdateExternalAuthLink", s.Subtest(func(db database.Store, check *expects) {

coderd/database/dbgen/dbgen.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -788,16 +788,17 @@ func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVers
788788
err := db.InTx(func(db database.Store) error {
789789
versionID := takeFirst(orig.ID, uuid.New())
790790
err := db.InsertTemplateVersion(genCtx, database.InsertTemplateVersionParams{
791-
ID: versionID,
792-
TemplateID: takeFirst(orig.TemplateID, uuid.NullUUID{}),
793-
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
794-
CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()),
795-
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
796-
Name: takeFirst(orig.Name, testutil.GetRandomName(t)),
797-
Message: orig.Message,
798-
Readme: takeFirst(orig.Readme, testutil.GetRandomName(t)),
799-
JobID: takeFirst(orig.JobID, uuid.New()),
800-
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
791+
ID: versionID,
792+
TemplateID: takeFirst(orig.TemplateID, uuid.NullUUID{}),
793+
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
794+
CreatedAt: takeFirst(orig.CreatedAt, dbtime.Now()),
795+
UpdatedAt: takeFirst(orig.UpdatedAt, dbtime.Now()),
796+
Name: takeFirst(orig.Name, testutil.GetRandomName(t)),
797+
Message: orig.Message,
798+
Readme: takeFirst(orig.Readme, testutil.GetRandomName(t)),
799+
JobID: takeFirst(orig.JobID, uuid.New()),
800+
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
801+
SourceExampleID: takeFirst(orig.SourceExampleID, sql.NullString{}),
801802
})
802803
if err != nil {
803804
return err

coderd/database/dbmem/dbmem.go

+34-33
Original file line numberDiff line numberDiff line change
@@ -7699,16 +7699,17 @@ func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.Inse
76997699

77007700
//nolint:gosimple
77017701
version := database.TemplateVersionTable{
7702-
ID: arg.ID,
7703-
TemplateID: arg.TemplateID,
7704-
OrganizationID: arg.OrganizationID,
7705-
CreatedAt: arg.CreatedAt,
7706-
UpdatedAt: arg.UpdatedAt,
7707-
Name: arg.Name,
7708-
Message: arg.Message,
7709-
Readme: arg.Readme,
7710-
JobID: arg.JobID,
7711-
CreatedBy: arg.CreatedBy,
7702+
ID: arg.ID,
7703+
TemplateID: arg.TemplateID,
7704+
OrganizationID: arg.OrganizationID,
7705+
CreatedAt: arg.CreatedAt,
7706+
UpdatedAt: arg.UpdatedAt,
7707+
Name: arg.Name,
7708+
Message: arg.Message,
7709+
Readme: arg.Readme,
7710+
JobID: arg.JobID,
7711+
CreatedBy: arg.CreatedBy,
7712+
SourceExampleID: arg.SourceExampleID,
77127713
}
77137714
q.templateVersions = append(q.templateVersions, version)
77147715
return nil
@@ -8555,29 +8556,6 @@ func (q *FakeQuerier) RegisterWorkspaceProxy(_ context.Context, arg database.Reg
85558556
return database.WorkspaceProxy{}, sql.ErrNoRows
85568557
}
85578558

8558-
func (q *FakeQuerier) RemoveRefreshToken(_ context.Context, arg database.RemoveRefreshTokenParams) error {
8559-
if err := validateDatabaseType(arg); err != nil {
8560-
return err
8561-
}
8562-
8563-
q.mutex.Lock()
8564-
defer q.mutex.Unlock()
8565-
for index, gitAuthLink := range q.externalAuthLinks {
8566-
if gitAuthLink.ProviderID != arg.ProviderID {
8567-
continue
8568-
}
8569-
if gitAuthLink.UserID != arg.UserID {
8570-
continue
8571-
}
8572-
gitAuthLink.UpdatedAt = arg.UpdatedAt
8573-
gitAuthLink.OAuthRefreshToken = ""
8574-
q.externalAuthLinks[index] = gitAuthLink
8575-
8576-
return nil
8577-
}
8578-
return sql.ErrNoRows
8579-
}
8580-
85818559
func (q *FakeQuerier) RemoveUserFromAllGroups(_ context.Context, userID uuid.UUID) error {
85828560
q.mutex.Lock()
85838561
defer q.mutex.Unlock()
@@ -8797,6 +8775,29 @@ func (q *FakeQuerier) UpdateExternalAuthLink(_ context.Context, arg database.Upd
87978775
return database.ExternalAuthLink{}, sql.ErrNoRows
87988776
}
87998777

8778+
func (q *FakeQuerier) UpdateExternalAuthLinkRefreshToken(_ context.Context, arg database.UpdateExternalAuthLinkRefreshTokenParams) error {
8779+
if err := validateDatabaseType(arg); err != nil {
8780+
return err
8781+
}
8782+
8783+
q.mutex.Lock()
8784+
defer q.mutex.Unlock()
8785+
for index, gitAuthLink := range q.externalAuthLinks {
8786+
if gitAuthLink.ProviderID != arg.ProviderID {
8787+
continue
8788+
}
8789+
if gitAuthLink.UserID != arg.UserID {
8790+
continue
8791+
}
8792+
gitAuthLink.UpdatedAt = arg.UpdatedAt
8793+
gitAuthLink.OAuthRefreshToken = arg.OAuthRefreshToken
8794+
q.externalAuthLinks[index] = gitAuthLink
8795+
8796+
return nil
8797+
}
8798+
return sql.ErrNoRows
8799+
}
8800+
88008801
func (q *FakeQuerier) UpdateGitSSHKey(_ context.Context, arg database.UpdateGitSSHKeyParams) (database.GitSSHKey, error) {
88018802
if err := validateDatabaseType(arg); err != nil {
88028803
return database.GitSSHKey{}, err

coderd/database/dbmetrics/querymetrics.go

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

coderd/database/dbmock/dbmock.go

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

coderd/database/dump.sql

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-- We cannot alter the column type while a view depends on it, so we drop it and recreate it.
2+
DROP VIEW template_version_with_user;
3+
4+
ALTER TABLE
5+
template_versions
6+
DROP COLUMN source_example_id;
7+
8+
-- Recreate `template_version_with_user` as described in dump.sql
9+
CREATE VIEW template_version_with_user AS
10+
SELECT
11+
template_versions.id,
12+
template_versions.template_id,
13+
template_versions.organization_id,
14+
template_versions.created_at,
15+
template_versions.updated_at,
16+
template_versions.name,
17+
template_versions.readme,
18+
template_versions.job_id,
19+
template_versions.created_by,
20+
template_versions.external_auth_providers,
21+
template_versions.message,
22+
template_versions.archived,
23+
COALESCE(visible_users.avatar_url, ''::text) AS created_by_avatar_url,
24+
COALESCE(visible_users.username, ''::text) AS created_by_username
25+
FROM (template_versions
26+
LEFT JOIN visible_users ON (template_versions.created_by = visible_users.id));
27+
28+
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-- We cannot alter the column type while a view depends on it, so we drop it and recreate it.
2+
DROP VIEW template_version_with_user;
3+
4+
ALTER TABLE
5+
template_versions
6+
ADD
7+
COLUMN source_example_id TEXT;
8+
9+
-- Recreate `template_version_with_user` as described in dump.sql
10+
CREATE VIEW template_version_with_user AS
11+
SELECT
12+
template_versions.id,
13+
template_versions.template_id,
14+
template_versions.organization_id,
15+
template_versions.created_at,
16+
template_versions.updated_at,
17+
template_versions.name,
18+
template_versions.readme,
19+
template_versions.job_id,
20+
template_versions.created_by,
21+
template_versions.external_auth_providers,
22+
template_versions.message,
23+
template_versions.archived,
24+
template_versions.source_example_id,
25+
COALESCE(visible_users.avatar_url, ''::text) AS created_by_avatar_url,
26+
COALESCE(visible_users.username, ''::text) AS created_by_username
27+
FROM (template_versions
28+
LEFT JOIN visible_users ON (template_versions.created_by = visible_users.id));
29+
30+
COMMENT ON VIEW template_version_with_user IS 'Joins in the username + avatar url of the created by user.';

coderd/database/models.go

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

coderd/database/querier.go

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

0 commit comments

Comments
 (0)