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

Commitdbf5569

Browse files
committed
Deserialize user and group ACLs when reading workspaces from DB
Also fix bug in the deserialization code.
1 parent017cac1 commitdbf5569

File tree

5 files changed

+33
-11
lines changed

5 files changed

+33
-11
lines changed

‎coderd/aitasks.go‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,10 @@ func (api *API) convertTasks(ctx context.Context, requesterID uuid.UUID, dbTasks
469469
returnnil,xerrors.Errorf("fetch workspaces: %w",err)
470470
}
471471

472-
workspaces:=database.ConvertWorkspaceRows(workspaceRows)
472+
workspaces,err:=database.ConvertWorkspaceRows(workspaceRows)
473+
iferr!=nil {
474+
returnnil,xerrors.Errorf("convert workspace rows: %w",err)
475+
}
473476

474477
// Gather associated data and convert to API workspaces.
475478
data,err:=api.workspaceData(ctx,workspaces)

‎coderd/database/modelmethods.go‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ func ConvertUserRows(rows []GetUsersRow) []User {
651651
returnusers
652652
}
653653

654-
funcConvertWorkspaceRows(rows []GetWorkspacesRow) []Workspace {
654+
funcConvertWorkspaceRows(rows []GetWorkspacesRow)([]Workspace,error) {
655655
workspaces:=make([]Workspace,len(rows))
656656
fori,r:=rangerows {
657657
workspaces[i]=Workspace{
@@ -683,9 +683,16 @@ func ConvertWorkspaceRows(rows []GetWorkspacesRow) []Workspace {
683683
NextStartAt:r.NextStartAt,
684684
TaskID:r.TaskID,
685685
}
686+
687+
iferr:=workspaces[i].UserACL.Scan(r.UserACL);err!=nil {
688+
returnnil,xerrors.Errorf("scan user ACL %q: %w",r.UserACL,err)
689+
}
690+
iferr:=workspaces[i].GroupACL.Scan(r.GroupACL);err!=nil {
691+
returnnil,xerrors.Errorf("scan group ACL %q: %w",r.GroupACL,err)
692+
}
686693
}
687694

688-
returnworkspaces
695+
returnworkspaces,nil
689696
}
690697

691698
func (gGroup)IsEveryone()bool {

‎coderd/database/types.go‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,10 @@ func (t *TemplateACL) Scan(src interface{}) error {
6767
switchv:=src.(type) {
6868
casestring:
6969
returnjson.Unmarshal([]byte(v),&t)
70-
case []byte, json.RawMessage:
71-
//nolint
72-
returnjson.Unmarshal(v.([]byte),&t)
70+
case []byte:
71+
returnjson.Unmarshal(v,&t)
72+
case json.RawMessage:
73+
returnjson.Unmarshal(v,&t)
7374
}
7475

7576
returnxerrors.Errorf("unexpected type %T",src)
@@ -85,9 +86,10 @@ func (t *WorkspaceACL) Scan(src interface{}) error {
8586
switchv:=src.(type) {
8687
casestring:
8788
returnjson.Unmarshal([]byte(v),&t)
88-
case []byte, json.RawMessage:
89-
//nolint
90-
returnjson.Unmarshal(v.([]byte),&t)
89+
case []byte:
90+
returnjson.Unmarshal(v,&t)
91+
case json.RawMessage:
92+
returnjson.Unmarshal(v,&t)
9193
}
9294

9395
returnxerrors.Errorf("unexpected type %T",src)

‎coderd/telemetry/telemetry.go‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,10 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
521521
iferr!=nil {
522522
returnxerrors.Errorf("get workspaces: %w",err)
523523
}
524-
workspaces:=database.ConvertWorkspaceRows(workspaceRows)
524+
workspaces,err:=database.ConvertWorkspaceRows(workspaceRows)
525+
iferr!=nil {
526+
returnxerrors.Errorf("convert workspace rows: %w",err)
527+
}
525528
snapshot.Workspaces=make([]Workspace,0,len(workspaces))
526529
for_,dbWorkspace:=rangeworkspaces {
527530
snapshot.Workspaces=append(snapshot.Workspaces,ConvertWorkspace(dbWorkspace))

‎coderd/workspaces.go‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,14 @@ func (api *API) workspaces(rw http.ResponseWriter, r *http.Request) {
219219
return
220220
}
221221

222-
workspaces:=database.ConvertWorkspaceRows(workspaceRows)
222+
workspaces,err:=database.ConvertWorkspaceRows(workspaceRows)
223+
iferr!=nil {
224+
httpapi.Write(ctx,rw,http.StatusInternalServerError, codersdk.Response{
225+
Message:"Internal error converting workspace rows.",
226+
Detail:err.Error(),
227+
})
228+
return
229+
}
223230

224231
data,err:=api.workspaceData(ctx,workspaces)
225232
iferr!=nil {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp