Skip to content

Commit 6cae769

Browse files
committed
fix: exclude prebuiltWorkspace permissions from orgAdmin role
1 parent a043f92 commit 6cae769

File tree

4 files changed

+16
-31
lines changed

4 files changed

+16
-31
lines changed

coderd/rbac/roles.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ func ReloadBuiltinRoles(opts *RoleOptions) {
414414
}),
415415
Org: map[string][]Permission{
416416
// Org admins should not have workspace exec perms.
417-
organizationID.String(): append(allPermsExcept(ResourceWorkspace, ResourceWorkspaceDormant, ResourceAssignRole), Permissions(map[string][]policy.Action{
417+
organizationID.String(): append(allPermsExcept(ResourceWorkspace, ResourceWorkspaceDormant, ResourcePrebuiltWorkspace, ResourceAssignRole), Permissions(map[string][]policy.Action{
418418
ResourceWorkspaceDormant.Type: {policy.ActionRead, policy.ActionDelete, policy.ActionCreate, policy.ActionUpdate, policy.ActionWorkspaceStop, policy.ActionCreateAgent, policy.ActionDeleteAgent},
419419
ResourceWorkspace.Type: slice.Omit(ResourceWorkspace.AvailableActions(), policy.ActionApplicationConnect, policy.ActionSSH),
420420
})...),

coderd/rbac/roles_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,8 @@ func TestRolePermissions(t *testing.T) {
501501
Actions: []policy.Action{policy.ActionRead, policy.ActionUpdate, policy.ActionDelete},
502502
Resource: rbac.ResourcePrebuiltWorkspace.WithID(uuid.New()).InOrg(orgID).WithOwner(memberMe.Actor.ID),
503503
AuthorizeMap: map[bool][]hasAuthSubjects{
504-
true: {owner, orgAdmin, orgMemberMe, templateAdmin, orgTemplateAdmin},
505-
false: {setOtherOrg, userAdmin, memberMe, orgUserAdmin, orgAuditor},
504+
true: {owner, orgMemberMe, templateAdmin, orgTemplateAdmin},
505+
false: {setOtherOrg, userAdmin, memberMe, orgAdmin, orgUserAdmin, orgAuditor},
506506
},
507507
},
508508
// Some admin style resources

enterprise/coderd/prebuilds/claim_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -415,18 +415,18 @@ func templateWithAgentAndPresetsWithPrebuilds(desiredInstances int32) *echo.Resp
415415
Instances: desiredInstances,
416416
},
417417
},
418-
//{
419-
// Name: "preset-b",
420-
// Parameters: []*proto.PresetParameter{
421-
// {
422-
// Name: "k1",
423-
// Value: "v2",
424-
// },
425-
// },
426-
// Prebuild: &proto.Prebuild{
427-
// Instances: desiredInstances,
428-
// },
429-
// },
418+
{
419+
Name: "preset-b",
420+
Parameters: []*proto.PresetParameter{
421+
{
422+
Name: "k1",
423+
Value: "v2",
424+
},
425+
},
426+
Prebuild: &proto.Prebuild{
427+
Instances: desiredInstances,
428+
},
429+
},
430430
},
431431
},
432432
},

enterprise/coderd/prebuilds/reconcile_test.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -475,26 +475,11 @@ func TestTemplateAdminDelete(t *testing.T) {
475475
template := coderdtest.CreateTemplate(t, client, orgID, version.ID)
476476
presets, err := client.TemplateVersionPresets(ctx, version.ID)
477477
require.NoError(t, err)
478-
require.Len(t, presets, 1)
478+
require.Len(t, presets, 2)
479479
preset := setupTestDBPreset(t, db, version.ID, 2, "b0rked")
480480

481481
templateAdminClient, _ := coderdtest.CreateAnotherUser(t, client, orgID, rbac.RoleTemplateAdmin())
482482

483-
state, err := reconciler.SnapshotState(ctx, spy)
484-
require.NoError(t, err)
485-
require.Len(t, state.Presets, 2)
486-
487-
for _, preset := range presets {
488-
ps, err := state.FilterByPreset(preset.ID)
489-
require.NoError(t, err)
490-
require.NotNil(t, ps)
491-
actions, err := reconciler.CalculateActions(ctx, *ps)
492-
require.NoError(t, err)
493-
require.NotNil(t, actions)
494-
495-
require.NoError(t, reconciler.ReconcilePreset(ctx, *ps))
496-
}
497-
498483
workspace, _ := setupTestDBPrebuild(
499484
t,
500485
clock,

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