Skip to content

Commit 41359ce

Browse files
stirbyhugodutkaSasSwartspikecurtisjohnstcn
authored
chore: add cherry-picks for release 2.18 (#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

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

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

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

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

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

coderd/database/dbmock/dbmock.go

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

coderd/database/dump.sql

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 28 additions & 0 deletions
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.';
Lines changed: 30 additions & 0 deletions
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

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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