diff --git a/coderd/templateversions.go b/coderd/templateversions.go index 85494949e9..4d5b54b993 100644 --- a/coderd/templateversions.go +++ b/coderd/templateversions.go @@ -420,6 +420,7 @@ func (api *API) fetchTemplateVersionDryRunJob(rw http.ResponseWriter, r *http.Re httpapi.Forbidden(rw) return database.ProvisionerJob{}, false } + // Do a workspace resource check since it's basically a workspace dry-run . if !api.Authorize(r, rbac.ActionRead, rbac.ResourceWorkspace.InOrg(templateVersion.OrganizationID).WithOwner(job.InitiatorID.String())) { diff --git a/codersdk/templates.go b/codersdk/templates.go index b339d8eadd..7065fed2bd 100644 --- a/codersdk/templates.go +++ b/codersdk/templates.go @@ -40,7 +40,7 @@ type TemplateRole string const ( TemplateRoleAdmin TemplateRole = "admin" - TemplateRoleView TemplateRole = "view" + TemplateRoleUse TemplateRole = "use" TemplateRoleDeleted TemplateRole = "" ) diff --git a/enterprise/coderd/templates.go b/enterprise/coderd/templates.go index 08b6fb262d..245f8d1e1d 100644 --- a/enterprise/coderd/templates.go +++ b/enterprise/coderd/templates.go @@ -226,7 +226,7 @@ func validateTemplateRole(role codersdk.TemplateRole) error { func convertToTemplateRole(actions []rbac.Action) codersdk.TemplateRole { switch { case len(actions) == 1 && actions[0] == rbac.ActionRead: - return codersdk.TemplateRoleView + return codersdk.TemplateRoleUse case len(actions) == 1 && actions[0] == rbac.WildcardSymbol: return codersdk.TemplateRoleAdmin } @@ -238,7 +238,7 @@ func convertSDKTemplateRole(role codersdk.TemplateRole) []rbac.Action { switch role { case codersdk.TemplateRoleAdmin: return []rbac.Action{rbac.WildcardSymbol} - case codersdk.TemplateRoleView: + case codersdk.TemplateRoleUse: return []rbac.Action{rbac.ActionRead} } diff --git a/enterprise/coderd/templates_test.go b/enterprise/coderd/templates_test.go index c47fae2468..b4f96eb610 100644 --- a/enterprise/coderd/templates_test.go +++ b/enterprise/coderd/templates_test.go @@ -35,7 +35,7 @@ func TestTemplateACL(t *testing.T) { err := client.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user2.ID.String(): codersdk.TemplateRoleView, + user2.ID.String(): codersdk.TemplateRoleUse, user3.ID.String(): codersdk.TemplateRoleAdmin, }, }) @@ -46,7 +46,7 @@ func TestTemplateACL(t *testing.T) { templateUser2 := codersdk.TemplateUser{ User: user2, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, } templateUser3 := codersdk.TemplateUser{ @@ -149,7 +149,7 @@ func TestTemplateACL(t *testing.T) { err := client.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user1.ID.String(): codersdk.TemplateRoleView, + user1.ID.String(): codersdk.TemplateRoleUse, }, }) require.NoError(t, err) @@ -158,7 +158,7 @@ func TestTemplateACL(t *testing.T) { require.NoError(t, err) require.Contains(t, acl.Users, codersdk.TemplateUser{ User: user1, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, }) err = client.DeleteUser(ctx, user1.ID) @@ -187,7 +187,7 @@ func TestTemplateACL(t *testing.T) { err := client.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user1.ID.String(): codersdk.TemplateRoleView, + user1.ID.String(): codersdk.TemplateRoleUse, }, }) require.NoError(t, err) @@ -196,7 +196,7 @@ func TestTemplateACL(t *testing.T) { require.NoError(t, err) require.Contains(t, acl.Users, codersdk.TemplateUser{ User: user1, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, }) _, err = client.UpdateUserStatus(ctx, user1.ID.String(), codersdk.UserStatusSuspended) @@ -229,7 +229,7 @@ func TestTemplateACL(t *testing.T) { err = client.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ GroupPerms: map[string]codersdk.TemplateRole{ - group.ID.String(): codersdk.TemplateRoleView, + group.ID.String(): codersdk.TemplateRoleUse, }, }) require.NoError(t, err) @@ -241,7 +241,7 @@ func TestTemplateACL(t *testing.T) { require.Contains(t, acl.Groups, codersdk.TemplateGroup{ Group: group, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, }) err = client.DeleteGroup(ctx, group.ID) @@ -253,7 +253,7 @@ func TestTemplateACL(t *testing.T) { require.Len(t, acl.Groups, 1) require.NotContains(t, acl.Groups, codersdk.TemplateGroup{ Group: group, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, }) }) @@ -273,7 +273,7 @@ func TestTemplateACL(t *testing.T) { err := client.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user1.ID.String(): codersdk.TemplateRoleView, + user1.ID.String(): codersdk.TemplateRoleUse, }, }) require.NoError(t, err) @@ -331,7 +331,7 @@ func TestUpdateTemplateACL(t *testing.T) { err := client.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user2.ID.String(): codersdk.TemplateRoleView, + user2.ID.String(): codersdk.TemplateRoleUse, user3.ID.String(): codersdk.TemplateRoleAdmin, }, }) @@ -342,7 +342,7 @@ func TestUpdateTemplateACL(t *testing.T) { templateUser2 := codersdk.TemplateUser{ User: user2, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, } templateUser3 := codersdk.TemplateUser{ @@ -370,7 +370,7 @@ func TestUpdateTemplateACL(t *testing.T) { template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) req := codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user2.ID.String(): codersdk.TemplateRoleView, + user2.ID.String(): codersdk.TemplateRoleUse, user3.ID.String(): codersdk.TemplateRoleAdmin, }, } @@ -385,7 +385,7 @@ func TestUpdateTemplateACL(t *testing.T) { require.NoError(t, err) require.Contains(t, acl.Users, codersdk.TemplateUser{ User: user2, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, }) require.Contains(t, acl.Users, codersdk.TemplateUser{ User: user3, @@ -506,7 +506,7 @@ func TestUpdateTemplateACL(t *testing.T) { template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) req := codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user2.ID.String(): codersdk.TemplateRoleView, + user2.ID.String(): codersdk.TemplateRoleUse, }, } @@ -553,7 +553,7 @@ func TestUpdateTemplateACL(t *testing.T) { req = codersdk.UpdateTemplateACL{ UserPerms: map[string]codersdk.TemplateRole{ - user3.ID.String(): codersdk.TemplateRoleView, + user3.ID.String(): codersdk.TemplateRoleUse, }, } @@ -565,7 +565,7 @@ func TestUpdateTemplateACL(t *testing.T) { require.Contains(t, acl.Users, codersdk.TemplateUser{ User: user3, - Role: codersdk.TemplateRoleView, + Role: codersdk.TemplateRoleUse, }) }) @@ -622,7 +622,7 @@ func TestUpdateTemplateACL(t *testing.T) { GroupPerms: map[string]codersdk.TemplateRole{ // The allUsers group shares the same ID as the organization. user.OrganizationID.String(): codersdk.TemplateRoleDeleted, - group.ID.String(): codersdk.TemplateRoleView, + group.ID.String(): codersdk.TemplateRoleUse, }, }) require.NoError(t, err) diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 72abae519b..92088b978f 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -916,7 +916,7 @@ export type ResourceType = export type ServerSentEventType = "data" | "error" | "ping" // From codersdk/templates.go -export type TemplateRole = "" | "admin" | "view" +export type TemplateRole = "" | "admin" | "use" // From codersdk/users.go export type UserStatus = "active" | "suspended" diff --git a/site/src/pages/TemplatePage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx b/site/src/pages/TemplatePage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx index cdfb191e7f..0188f0de11 100644 --- a/site/src/pages/TemplatePage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx +++ b/site/src/pages/TemplatePage/TemplatePermissionsPage/TemplatePermissionsPageView.tsx @@ -51,14 +51,14 @@ const AddTemplateUserOrGroup: React.FC = ({ const styles = useStyles() const [selectedOption, setSelectedOption] = useState(null) - const [selectedRole, setSelectedRole] = useState("view") + const [selectedRole, setSelectedRole] = useState("use") const excludeFromAutocomplete = templateACL ? [...templateACL.group, ...templateACL.users] : [] const resetValues = () => { setSelectedOption(null) - setSelectedRole("view") + setSelectedRole("use") } return ( @@ -89,7 +89,7 @@ const AddTemplateUserOrGroup: React.FC = ({ />