mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: add an organization member permission level (#19953)
This commit is contained in:
@@ -199,6 +199,7 @@ export const createCustomRole = async (
|
||||
},
|
||||
],
|
||||
user_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
});
|
||||
return role;
|
||||
};
|
||||
|
||||
Generated
+10
-2
@@ -1520,11 +1520,15 @@ export interface CustomRoleRequest {
|
||||
readonly name: string;
|
||||
readonly display_name: string;
|
||||
readonly site_permissions: readonly Permission[];
|
||||
readonly user_permissions: readonly Permission[];
|
||||
/**
|
||||
* OrganizationPermissions are specific to the organization the role belongs to.
|
||||
*/
|
||||
readonly organization_permissions: readonly Permission[];
|
||||
readonly user_permissions: readonly Permission[];
|
||||
/**
|
||||
* OrganizationMemberPermissions are specific to the organization the role belongs to.
|
||||
*/
|
||||
readonly organization_member_permissions: readonly Permission[];
|
||||
}
|
||||
|
||||
// From codersdk/deployment.go
|
||||
@@ -4140,11 +4144,15 @@ export interface Role {
|
||||
readonly organization_id?: string;
|
||||
readonly display_name: string;
|
||||
readonly site_permissions: readonly Permission[];
|
||||
readonly user_permissions: readonly Permission[];
|
||||
/**
|
||||
* OrganizationPermissions are specific for the organization in the field 'OrganizationID' above.
|
||||
*/
|
||||
readonly organization_permissions: readonly Permission[];
|
||||
readonly user_permissions: readonly Permission[];
|
||||
/**
|
||||
* OrganizationMemberPermissions are specific for the organization in the field 'OrganizationID' above.
|
||||
*/
|
||||
readonly organization_member_permissions: readonly Permission[];
|
||||
}
|
||||
|
||||
// From codersdk/rbacroles.go
|
||||
|
||||
@@ -66,9 +66,11 @@ const CreateEditRolePageView: FC<CreateEditRolePageViewProps> = ({
|
||||
initialValues: {
|
||||
name: role?.name || "",
|
||||
display_name: role?.display_name || "",
|
||||
site_permissions: role?.site_permissions || [],
|
||||
organization_permissions: role?.organization_permissions || [],
|
||||
user_permissions: role?.user_permissions || [],
|
||||
site_permissions: role?.site_permissions ?? [],
|
||||
user_permissions: role?.user_permissions ?? [],
|
||||
organization_permissions: role?.organization_permissions ?? [],
|
||||
organization_member_permissions:
|
||||
role?.organization_member_permissions ?? [],
|
||||
},
|
||||
validationSchema,
|
||||
onSubmit,
|
||||
|
||||
@@ -197,8 +197,9 @@ export const MockRoles: (AssignableRoles | Role)[] = [
|
||||
action: "stop",
|
||||
},
|
||||
],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
assignable: true,
|
||||
built_in: true,
|
||||
},
|
||||
@@ -292,8 +293,9 @@ export const MockRoles: (AssignableRoles | Role)[] = [
|
||||
action: "read",
|
||||
},
|
||||
],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
assignable: true,
|
||||
built_in: true,
|
||||
},
|
||||
@@ -407,8 +409,9 @@ export const MockRoles: (AssignableRoles | Role)[] = [
|
||||
action: "create",
|
||||
},
|
||||
],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
assignable: true,
|
||||
built_in: true,
|
||||
},
|
||||
@@ -462,8 +465,9 @@ export const MockRoles: (AssignableRoles | Role)[] = [
|
||||
action: "read",
|
||||
},
|
||||
],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
built_in: true,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -281,45 +281,50 @@ export const MockOwnerRole: TypesGen.Role = {
|
||||
name: "owner",
|
||||
display_name: "Owner",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: "",
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockUserAdminRole: TypesGen.Role = {
|
||||
name: "user_admin",
|
||||
display_name: "User Admin",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: "",
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockTemplateAdminRole: TypesGen.Role = {
|
||||
name: "template_admin",
|
||||
display_name: "Template Admin",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: "",
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockAuditorRole: TypesGen.Role = {
|
||||
name: "auditor",
|
||||
display_name: "Auditor",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: "",
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockWorkspaceCreationBanRole: TypesGen.Role = {
|
||||
name: "organization-workspace-creation-ban",
|
||||
display_name: "Organization Workspace Creation Ban",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: "",
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockMemberRole: TypesGen.SlimRole = {
|
||||
@@ -331,27 +336,30 @@ export const MockOrganizationAdminRole: TypesGen.Role = {
|
||||
name: "organization-admin",
|
||||
display_name: "Organization Admin",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: MockOrganization.id,
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockOrganizationUserAdminRole: TypesGen.Role = {
|
||||
name: "organization-user-admin",
|
||||
display_name: "Organization User Admin",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: MockOrganization.id,
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockOrganizationTemplateAdminRole: TypesGen.Role = {
|
||||
name: "organization-template-admin",
|
||||
display_name: "Organization Template Admin",
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: MockOrganization.id,
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockOrganizationAuditorRole: TypesGen.AssignableRoles = {
|
||||
@@ -360,18 +368,20 @@ export const MockOrganizationAuditorRole: TypesGen.AssignableRoles = {
|
||||
assignable: true,
|
||||
built_in: false,
|
||||
site_permissions: [],
|
||||
organization_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: MockOrganization.id,
|
||||
organization_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockRoleWithOrgPermissions: TypesGen.AssignableRoles = {
|
||||
name: "my-role-1",
|
||||
display_name: "My Role 1",
|
||||
organization_id: MockOrganization.id,
|
||||
assignable: true,
|
||||
built_in: false,
|
||||
site_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: MockOrganization.id,
|
||||
organization_permissions: [
|
||||
{
|
||||
negate: false,
|
||||
@@ -454,14 +464,15 @@ export const MockRoleWithOrgPermissions: TypesGen.AssignableRoles = {
|
||||
action: "create",
|
||||
},
|
||||
],
|
||||
user_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
export const MockRole2WithOrgPermissions: TypesGen.Role = {
|
||||
name: "my-role-1",
|
||||
display_name: "My Role 1",
|
||||
organization_id: MockOrganization.id,
|
||||
site_permissions: [],
|
||||
user_permissions: [],
|
||||
organization_id: MockOrganization.id,
|
||||
organization_permissions: [
|
||||
{
|
||||
negate: false,
|
||||
@@ -469,7 +480,7 @@ export const MockRole2WithOrgPermissions: TypesGen.Role = {
|
||||
action: "create",
|
||||
},
|
||||
],
|
||||
user_permissions: [],
|
||||
organization_member_permissions: [],
|
||||
};
|
||||
|
||||
// assignableRole takes a role and a boolean. The boolean implies if the
|
||||
|
||||
Reference in New Issue
Block a user