mirror of
https://github.com/coder/coder.git
synced 2026-09-22 05:05:20 +08:00
chore: change view perm to use (#4496)
This commit is contained in:
@@ -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())) {
|
||||
|
||||
@@ -40,7 +40,7 @@ type TemplateRole string
|
||||
|
||||
const (
|
||||
TemplateRoleAdmin TemplateRole = "admin"
|
||||
TemplateRoleView TemplateRole = "view"
|
||||
TemplateRoleUse TemplateRole = "use"
|
||||
TemplateRoleDeleted TemplateRole = ""
|
||||
)
|
||||
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
+14
-9
@@ -51,14 +51,14 @@ const AddTemplateUserOrGroup: React.FC<AddTemplateUserOrGroupProps> = ({
|
||||
const styles = useStyles()
|
||||
const [selectedOption, setSelectedOption] =
|
||||
useState<UserOrGroupAutocompleteValue>(null)
|
||||
const [selectedRole, setSelectedRole] = useState<TemplateRole>("view")
|
||||
const [selectedRole, setSelectedRole] = useState<TemplateRole>("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<AddTemplateUserOrGroupProps> = ({
|
||||
/>
|
||||
|
||||
<Select
|
||||
defaultValue="view"
|
||||
defaultValue="use"
|
||||
variant="outlined"
|
||||
className={styles.select}
|
||||
disabled={isLoading}
|
||||
@@ -97,8 +97,8 @@ const AddTemplateUserOrGroup: React.FC<AddTemplateUserOrGroupProps> = ({
|
||||
setSelectedRole(event.target.value as TemplateRole)
|
||||
}}
|
||||
>
|
||||
<MenuItem key="view" value="view">
|
||||
View
|
||||
<MenuItem key="use" value="use">
|
||||
Use
|
||||
</MenuItem>
|
||||
<MenuItem key="admin" value="admin">
|
||||
Admin
|
||||
@@ -129,17 +129,20 @@ const RoleSelect: FC<SelectProps> = (props) => {
|
||||
className={styles.updateSelect}
|
||||
{...props}
|
||||
>
|
||||
<MenuItem key="view" value="view" className={styles.menuItem}>
|
||||
<MenuItem key="use" value="use" className={styles.menuItem}>
|
||||
<div>
|
||||
<div>View</div>
|
||||
<div className={styles.menuItemSecondary}>Read, use</div>
|
||||
<div>Use</div>
|
||||
<div className={styles.menuItemSecondary}>
|
||||
Can read and use this template to create workspaces.
|
||||
</div>
|
||||
</div>
|
||||
</MenuItem>
|
||||
<MenuItem key="admin" value="admin" className={styles.menuItem}>
|
||||
<div>
|
||||
<div>Admin</div>
|
||||
<div className={styles.menuItemSecondary}>
|
||||
Read, use, edit, push, and delete
|
||||
Can modify all aspects of this template including permissions,
|
||||
metadata, and template versions.
|
||||
</div>
|
||||
</div>
|
||||
</MenuItem>
|
||||
@@ -386,6 +389,8 @@ export const useStyles = makeStyles((theme) => {
|
||||
lineHeight: "140%",
|
||||
paddingTop: theme.spacing(1.5),
|
||||
paddingBottom: theme.spacing(1.5),
|
||||
whiteSpace: "normal",
|
||||
inlineSize: "250px",
|
||||
},
|
||||
|
||||
menuItemSecondary: {
|
||||
|
||||
@@ -920,10 +920,10 @@ export const MockGroup: TypesGen.Group = {
|
||||
|
||||
export const MockTemplateACL: TypesGen.TemplateACL = {
|
||||
group: [
|
||||
{ ...everyOneGroup(MockOrganization.id), role: "view" },
|
||||
{ ...everyOneGroup(MockOrganization.id), role: "use" },
|
||||
{ ...MockGroup, role: "admin" },
|
||||
],
|
||||
users: [{ ...MockUser, role: "view" }],
|
||||
users: [{ ...MockUser, role: "use" }],
|
||||
}
|
||||
|
||||
export const MockTemplateACLEmpty: TypesGen.TemplateACL = {
|
||||
|
||||
Reference in New Issue
Block a user