From fe79e4c8f1cc801a32bea0023e6e98a6bab6c2bb Mon Sep 17 00:00:00 2001 From: Aryan Bhokare <92683836+aryan-bhokare@users.noreply.github.com> Date: Tue, 2 Jul 2024 09:56:16 +0530 Subject: [PATCH] Executor role implementation. (#4737) * Refactor editor to executer in Authentication service. Signed-off-by: aryan * Refactor editor to executer in GraphQl servers. Signed-off-by: aryan * Changing executor roles. Signed-off-by: aryan * Updation in frontend hooks corresponding to backend refactor. Signed-off-by: aryan * Executer role implementation. Converted editor roles to executer role in frontend files. And Changed rbacs of the new Executer role. Signed-off-by: aryan * modification of api specs for executor Signed-off-by: aryan * removed executor role from userInfraRegistration and fixed import orders. Signed-off-by: aryan * refactor executer to executor Signed-off-by: aryan * Removing exector permission from launch experiment FE Signed-off-by: aryan * minor fix Signed-off-by: aryan --------- Signed-off-by: aryan Co-authored-by: Namkyu Park <53862866+namkyu1999@users.noreply.github.com> Signed-off-by: andoriyaprashant --- .../api/handlers/rest/project_handler.go | 2 +- .../api/handlers/rest/project_handler_test.go | 2 +- .../authentication/pkg/entities/project.go | 6 +- .../authentication/pkg/validations/roles.go | 8 +- .../definitions/shared/project.graphqls | 2 +- .../server/graph/generated/generated.go | 2 +- .../graphql/server/graph/model/models_gen.go | 10 +-- .../graphql/server/pkg/authorization/roles.go | 74 +++++++++---------- .../pkg/database/mongodb/project/schema.go | 6 +- .../auth/hooks/useSendInvitationMutation.ts | 2 +- .../api/auth/schemas/GetInvitationResponse.ts | 2 +- .../web/src/api/auth/schemas/ProjectMember.ts | 2 +- .../ExperimentActionButtons.tsx | 12 +-- .../NewExperimentButton.tsx | 2 +- .../PredefinedExperimentCard.tsx | 2 +- chaoscenter/web/src/models/rbac.ts | 2 +- chaoscenter/web/src/strings/strings.en.yaml | 2 +- chaoscenter/web/src/strings/types.ts | 2 +- .../web/src/utils/getPropsBasedOnStatus.tsx | 2 +- chaoscenter/web/src/utils/usePermissions.ts | 4 +- .../src/views/ChaosHubMenu/ChaosHubMenu.tsx | 6 +- .../web/src/views/ChaosHubs/AddHubModal.tsx | 2 +- .../src/views/ChaosProbe/ChaosProbeHeader.tsx | 2 +- .../src/views/ChaosProbes/AddProbeModal.tsx | 2 +- .../ChaosProbes/ChaosProbesTableMenu.tsx | 4 +- .../views/ChaosStudio/StudioActionButtons.tsx | 4 +- .../EnvironmentList/DeleteEnvironment.tsx | 2 +- .../EnvironmentList/EnvironmentsList.tsx | 2 +- .../EnvironmentList/EnvironmentsTableMenu.tsx | 4 +- .../Tabs/Probes/MenuCell.tsx | 4 +- .../Tabs/Probes/SelectProbesTab/NoProbes.tsx | 2 +- .../ExperimentDashboardV2TableMenu.tsx | 6 +- .../ExperimentYAMLBuilder.tsx | 2 +- chaoscenter/web/src/views/Gitops/Gitops.tsx | 2 +- .../src/views/ImageRegistry/ImageRegistry.tsx | 2 +- .../InviteNewMembers/InviteUsersTable.tsx | 4 +- ...netesChaosInfrastructureConnectionTest.tsx | 2 +- ...rnetesChaosInfrastructureCreationModal.tsx | 2 +- .../KubernetesChaosInfrastructureDetails.tsx | 2 +- .../KubernetesChaosInfrastructureTable.tsx | 4 +- .../PredefinedExperiment.tsx | 4 +- .../ActiveMembersListColumns.tsx | 12 +-- .../ProjectMembers/PendingMembersTable.tsx | 8 +- mkdocs/docs/auth/v3.0.0/auth-api.json | 8 +- 44 files changed, 119 insertions(+), 119 deletions(-) diff --git a/chaoscenter/authentication/api/handlers/rest/project_handler.go b/chaoscenter/authentication/api/handlers/rest/project_handler.go index 9d98b2a16e6..33dc02c9530 100644 --- a/chaoscenter/authentication/api/handlers/rest/project_handler.go +++ b/chaoscenter/authentication/api/handlers/rest/project_handler.go @@ -413,7 +413,7 @@ func SendInvitation(service services.ApplicationService) gin.HandlerFunc { } // Validating member role - if member.Role == nil || (*member.Role != entities.RoleEditor && *member.Role != entities.RoleViewer) { + if member.Role == nil || (*member.Role != entities.RoleExecutor && *member.Role != entities.RoleViewer) { c.JSON(utils.ErrorStatusCodes[utils.ErrInvalidRole], presenter.CreateErrorResponse(utils.ErrInvalidRole)) return } diff --git a/chaoscenter/authentication/api/handlers/rest/project_handler_test.go b/chaoscenter/authentication/api/handlers/rest/project_handler_test.go index dea26203fa8..e801241ffc7 100644 --- a/chaoscenter/authentication/api/handlers/rest/project_handler_test.go +++ b/chaoscenter/authentication/api/handlers/rest/project_handler_test.go @@ -203,7 +203,7 @@ func TestGetProject(t *testing.T) { Value: primitive.D{ primitive.E{ Key: "$in", - Value: []string{"Owner", "Viewer", "Editor"}, + Value: []string{"Owner", "Viewer", "Executor"}, }, }, }, diff --git a/chaoscenter/authentication/pkg/entities/project.go b/chaoscenter/authentication/pkg/entities/project.go index 3dda69124d5..6aa35fe073f 100644 --- a/chaoscenter/authentication/pkg/entities/project.go +++ b/chaoscenter/authentication/pkg/entities/project.go @@ -108,9 +108,9 @@ func (member *Member) GetMemberOutput() *Member { type MemberRole string const ( - RoleOwner MemberRole = "Owner" - RoleEditor MemberRole = "Editor" - RoleViewer MemberRole = "Viewer" + RoleOwner MemberRole = "Owner" + RoleExecutor MemberRole = "Executor" + RoleViewer MemberRole = "Viewer" ) // Invitation defines the type of the invitation that is sent by the Owner of the project to other users diff --git a/chaoscenter/authentication/pkg/validations/roles.go b/chaoscenter/authentication/pkg/validations/roles.go index eb5c8471586..17319ef1f57 100644 --- a/chaoscenter/authentication/pkg/validations/roles.go +++ b/chaoscenter/authentication/pkg/validations/roles.go @@ -4,11 +4,11 @@ import "github.com/litmuschaos/litmus/chaoscenter/authentication/pkg/entities" var MutationRbacRules = map[string][]string{ "sendInvitation": {string(entities.RoleOwner)}, - "acceptInvitation": {string(entities.RoleViewer), string(entities.RoleEditor)}, + "acceptInvitation": {string(entities.RoleViewer), string(entities.RoleExecutor)}, "declineInvitation": {string(entities.RoleViewer), - string(entities.RoleEditor)}, + string(entities.RoleExecutor)}, "removeInvitation": {string(entities.RoleOwner)}, - "leaveProject": {string(entities.RoleViewer), string(entities.RoleEditor)}, + "leaveProject": {string(entities.RoleViewer), string(entities.RoleExecutor)}, "updateProjectName": {string(entities.RoleOwner)}, - "getProject": {string(entities.RoleOwner), string(entities.RoleViewer), string(entities.RoleEditor)}, + "getProject": {string(entities.RoleOwner), string(entities.RoleViewer), string(entities.RoleExecutor)}, } diff --git a/chaoscenter/graphql/definitions/shared/project.graphqls b/chaoscenter/graphql/definitions/shared/project.graphqls index b2475aeb677..46ada7318e9 100644 --- a/chaoscenter/graphql/definitions/shared/project.graphqls +++ b/chaoscenter/graphql/definitions/shared/project.graphqls @@ -5,6 +5,6 @@ enum Invitation { enum MemberRole { Owner - Editor + Executor Viewer } diff --git a/chaoscenter/graphql/server/graph/generated/generated.go b/chaoscenter/graphql/server/graph/generated/generated.go index 9f5bc41c287..932e018a654 100644 --- a/chaoscenter/graphql/server/graph/generated/generated.go +++ b/chaoscenter/graphql/server/graph/generated/generated.go @@ -8173,7 +8173,7 @@ extend type Mutation { enum MemberRole { Owner - Editor + Executor Viewer } `, BuiltIn: false}, diff --git a/chaoscenter/graphql/server/graph/model/models_gen.go b/chaoscenter/graphql/server/graph/model/models_gen.go index d2e2240be93..b4173ea00b2 100644 --- a/chaoscenter/graphql/server/graph/model/models_gen.go +++ b/chaoscenter/graphql/server/graph/model/models_gen.go @@ -2525,20 +2525,20 @@ func (e Invitation) MarshalGQL(w io.Writer) { type MemberRole string const ( - MemberRoleOwner MemberRole = "Owner" - MemberRoleEditor MemberRole = "Editor" - MemberRoleViewer MemberRole = "Viewer" + MemberRoleOwner MemberRole = "Owner" + MemberRoleExecutor MemberRole = "Executor" + MemberRoleViewer MemberRole = "Viewer" ) var AllMemberRole = []MemberRole{ MemberRoleOwner, - MemberRoleEditor, + MemberRoleExecutor, MemberRoleViewer, } func (e MemberRole) IsValid() bool { switch e { - case MemberRoleOwner, MemberRoleEditor, MemberRoleViewer: + case MemberRoleOwner, MemberRoleExecutor, MemberRoleViewer: return true } return false diff --git a/chaoscenter/graphql/server/pkg/authorization/roles.go b/chaoscenter/graphql/server/pkg/authorization/roles.go index ab19e1467c4..5ec29f6544b 100644 --- a/chaoscenter/graphql/server/pkg/authorization/roles.go +++ b/chaoscenter/graphql/server/pkg/authorization/roles.go @@ -56,53 +56,53 @@ const ( ListEnvironments RoleQuery = "ListEnvironments" // Probe - AddProbe RoleQuery = "AddProbe" - DeleteProbe RoleQuery = "DeleteProbe" - UpdateProbe RoleQuery = "UpdateProbe" - GetProbe RoleQuery = "GetProbe" - ListProbes RoleQuery = "ListProbes" - MemberRoleOwnerString = string(model.MemberRoleOwner) - MemberRoleEditorString = string(model.MemberRoleEditor) - MemberRoleViewerString = string(model.MemberRoleViewer) + AddProbe RoleQuery = "AddProbe" + DeleteProbe RoleQuery = "DeleteProbe" + UpdateProbe RoleQuery = "UpdateProbe" + GetProbe RoleQuery = "GetProbe" + ListProbes RoleQuery = "ListProbes" + MemberRoleOwnerString = string(model.MemberRoleOwner) + MemberRoleExecutorString = string(model.MemberRoleExecutor) + MemberRoleViewerString = string(model.MemberRoleViewer) ) var MutationRbacRules = map[RoleQuery][]string{ - UserInfrastructureReg: {MemberRoleOwnerString, MemberRoleEditorString}, - CreateChaosExperiment: {MemberRoleOwnerString, MemberRoleEditorString}, - ReRunChaosExperiment: {MemberRoleOwnerString, MemberRoleEditorString}, - DeleteChaosExperiment: {MemberRoleOwnerString, MemberRoleEditorString}, - StopChaosExperiment: {MemberRoleOwnerString, MemberRoleEditorString}, - AddChaosHub: {MemberRoleOwnerString, MemberRoleEditorString}, - UpdateChaosExperiment: {MemberRoleOwnerString, MemberRoleEditorString}, - DeleteInfrastructures: {MemberRoleOwnerString, MemberRoleEditorString}, - UpdateChaosHub: {MemberRoleOwnerString, MemberRoleEditorString}, - DeleteChaosHub: {MemberRoleOwnerString, MemberRoleEditorString}, + UserInfrastructureReg: {MemberRoleOwnerString}, + CreateChaosExperiment: {MemberRoleOwnerString}, + ReRunChaosExperiment: {MemberRoleOwnerString, MemberRoleExecutorString}, + DeleteChaosExperiment: {MemberRoleOwnerString}, + StopChaosExperiment: {MemberRoleOwnerString, MemberRoleExecutorString}, + AddChaosHub: {MemberRoleOwnerString}, + UpdateChaosExperiment: {MemberRoleOwnerString}, + DeleteInfrastructures: {MemberRoleOwnerString}, + UpdateChaosHub: {MemberRoleOwnerString}, + DeleteChaosHub: {MemberRoleOwnerString}, EnableGitOps: {MemberRoleOwnerString}, DisableGitOps: {MemberRoleOwnerString}, UpdateGitOps: {MemberRoleOwnerString}, - ListWorkflowRuns: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - GetWorkflowRun: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - ListInfrastructures: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - GetInfrastructure: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - GetManifest: {MemberRoleOwnerString, MemberRoleEditorString}, - GetInfraDetails: {MemberRoleOwnerString, MemberRoleEditorString}, - ListCharts: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - ListExperiment: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - SaveChaosHub: {MemberRoleOwnerString, MemberRoleEditorString}, + ListWorkflowRuns: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + GetWorkflowRun: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + ListInfrastructures: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + GetInfrastructure: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + GetManifest: {MemberRoleOwnerString, MemberRoleExecutorString}, + GetInfraDetails: {MemberRoleOwnerString, MemberRoleExecutorString}, + ListCharts: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + ListExperiment: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + SaveChaosHub: {MemberRoleOwnerString}, CreateImageRegistry: {MemberRoleOwnerString}, UpdateImageRegistry: {MemberRoleOwnerString}, DeleteImageRegistry: {MemberRoleOwnerString}, GetGitOpsDetails: {MemberRoleOwnerString}, ListImageRegistry: {MemberRoleOwnerString}, GetImageRegistry: {MemberRoleOwnerString}, - CreateEnvironment: {MemberRoleOwnerString, MemberRoleEditorString}, - UpdateEnvironment: {MemberRoleOwnerString, MemberRoleEditorString}, - DeleteEnvironment: {MemberRoleOwnerString, MemberRoleEditorString}, - GetEnvironment: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - ListEnvironments: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - AddProbe: {MemberRoleOwnerString, MemberRoleEditorString}, - UpdateProbe: {MemberRoleOwnerString, MemberRoleEditorString}, - GetProbe: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - ListProbes: {MemberRoleOwnerString, MemberRoleEditorString, MemberRoleViewerString}, - DeleteProbe: {MemberRoleOwnerString, MemberRoleEditorString}, + CreateEnvironment: {MemberRoleOwnerString}, + UpdateEnvironment: {MemberRoleOwnerString}, + DeleteEnvironment: {MemberRoleOwnerString}, + GetEnvironment: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + ListEnvironments: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + AddProbe: {MemberRoleOwnerString}, + UpdateProbe: {MemberRoleOwnerString}, + GetProbe: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + ListProbes: {MemberRoleOwnerString, MemberRoleExecutorString, MemberRoleViewerString}, + DeleteProbe: {MemberRoleOwnerString}, } diff --git a/chaoscenter/graphql/server/pkg/database/mongodb/project/schema.go b/chaoscenter/graphql/server/pkg/database/mongodb/project/schema.go index d0882f2d22a..9ae6c0652ae 100644 --- a/chaoscenter/graphql/server/pkg/database/mongodb/project/schema.go +++ b/chaoscenter/graphql/server/pkg/database/mongodb/project/schema.go @@ -23,9 +23,9 @@ type Member struct { type MemberRole string const ( - RoleOwner MemberRole = "Owner" - RoleEditor MemberRole = "Editor" - RoleViewer MemberRole = "Viewer" + RoleOwner MemberRole = "Owner" + RoleExecutor MemberRole = "Executor" + RoleViewer MemberRole = "Viewer" ) // Invitation defines the type of the invitation that is sent by the Owner of the project to other users diff --git a/chaoscenter/web/src/api/auth/hooks/useSendInvitationMutation.ts b/chaoscenter/web/src/api/auth/hooks/useSendInvitationMutation.ts index 6957bf81f51..b61645a8435 100644 --- a/chaoscenter/web/src/api/auth/hooks/useSendInvitationMutation.ts +++ b/chaoscenter/web/src/api/auth/hooks/useSendInvitationMutation.ts @@ -8,7 +8,7 @@ import { fetcher, FetcherOptions } from 'services/fetcher'; export type SendInvitationRequestBody = { projectID: string; - role: 'Editor' | 'Owner' | 'Viewer'; + role: 'Executor' | 'Owner' | 'Viewer'; userID: string; }; diff --git a/chaoscenter/web/src/api/auth/schemas/GetInvitationResponse.ts b/chaoscenter/web/src/api/auth/schemas/GetInvitationResponse.ts index 47d86c0515b..8c87d2993ac 100644 --- a/chaoscenter/web/src/api/auth/schemas/GetInvitationResponse.ts +++ b/chaoscenter/web/src/api/auth/schemas/GetInvitationResponse.ts @@ -4,7 +4,7 @@ import type { ProjectMember } from '../schemas/ProjectMember'; export interface GetInvitationResponse { - invitationRole: 'Editor' | 'Owner' | 'Viewer'; + invitationRole: 'Executor' | 'Owner' | 'Viewer'; projectID: string; projectName: string; projectOwner: ProjectMember; diff --git a/chaoscenter/web/src/api/auth/schemas/ProjectMember.ts b/chaoscenter/web/src/api/auth/schemas/ProjectMember.ts index 25d32ff5069..54385b7d383 100644 --- a/chaoscenter/web/src/api/auth/schemas/ProjectMember.ts +++ b/chaoscenter/web/src/api/auth/schemas/ProjectMember.ts @@ -7,7 +7,7 @@ export interface ProjectMember { invitation: 'Accepted' | 'Declined' | 'Exited' | 'Pending'; joinedAt?: string; name?: string; - role: 'Editor' | 'Owner' | 'Viewer'; + role: 'Executor' | 'Owner' | 'Viewer'; userID: string; username: string; } diff --git a/chaoscenter/web/src/components/ExperimentActionButtons/ExperimentActionButtons.tsx b/chaoscenter/web/src/components/ExperimentActionButtons/ExperimentActionButtons.tsx index 29fdd9fdab1..e97e63bc090 100644 --- a/chaoscenter/web/src/components/ExperimentActionButtons/ExperimentActionButtons.tsx +++ b/chaoscenter/web/src/components/ExperimentActionButtons/ExperimentActionButtons.tsx @@ -89,7 +89,7 @@ export const RunExperimentButton = ({ icon={'play'} withoutCurrentColor variation={ButtonVariation.ICON} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.Executor} onClick={() => { runChaosExperimentMutation({ variables: { projectID: scope.projectID, experimentID: experimentID } @@ -161,7 +161,7 @@ export const StopExperimentButton = ({ isDark: true, ...tooltipProps }} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.Executor} variation={ButtonVariation.ICON} icon={'stop'} onClick={openStopExperimentDialog} @@ -240,7 +240,7 @@ export const StopExperimentRunButton = ({ }} variation={ButtonVariation.ICON} icon={'stop'} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.Executor} onClick={openStopExperimentRunDialog} /> @@ -271,7 +271,7 @@ export const EditExperimentButton = ({ experimentID, tooltipProps }: ActionButto search: `tab=${StudioTabs.BUILDER}` }); }} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.OWNER} /> ); @@ -297,7 +297,7 @@ export const CloneExperimentButton = ({ experimentID, tooltipProps }: ActionButt pathname: paths.toCloneExperiment({ experimentKey: experimentID }) }); }} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.Executor} /> ); @@ -425,7 +425,7 @@ export const EnableDisableCronButton = ({ variation={ButtonVariation.ICON} icon={'time'} onClick={openCronEnableDisableDialog} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.Executor} /> {cronEnableDisableDialog} diff --git a/chaoscenter/web/src/components/NewExperimentButton/NewExperimentButton.tsx b/chaoscenter/web/src/components/NewExperimentButton/NewExperimentButton.tsx index b8537938ac4..cba6ae7c015 100644 --- a/chaoscenter/web/src/components/NewExperimentButton/NewExperimentButton.tsx +++ b/chaoscenter/web/src/components/NewExperimentButton/NewExperimentButton.tsx @@ -18,7 +18,7 @@ export default function NewExperimentButton({ disabled }: { disabled?: boolean } { e.stopPropagation(); // Prevents the card from being clicked launchExperiment(); diff --git a/chaoscenter/web/src/models/rbac.ts b/chaoscenter/web/src/models/rbac.ts index 46ffce9fee3..02ffbbb185a 100644 --- a/chaoscenter/web/src/models/rbac.ts +++ b/chaoscenter/web/src/models/rbac.ts @@ -1,6 +1,6 @@ export enum PermissionGroup { OWNER = 'Owner', - EDITOR = 'Editor', + Executor = 'Executor', VIEWER = 'Viewer' } diff --git a/chaoscenter/web/src/strings/strings.en.yaml b/chaoscenter/web/src/strings/strings.en.yaml index 80fff0b50af..e9061665844 100644 --- a/chaoscenter/web/src/strings/strings.en.yaml +++ b/chaoscenter/web/src/strings/strings.en.yaml @@ -1,4 +1,5 @@ 404Error: Oops, we could not find this page. +Executor: Executor FRI: FRI MON: MON NASlash: N/A @@ -306,7 +307,6 @@ editSameExperimentDescription: >- editSameExperimentTitle: Edit on the existing Experiment editYaml: Edit Yaml editingChaosHub: Editing ChaosHub -editor: Editor effect: Effect email: Email emailIsRequired: Email is a required field diff --git a/chaoscenter/web/src/strings/types.ts b/chaoscenter/web/src/strings/types.ts index 9db3a837ac8..ce63116c0f6 100644 --- a/chaoscenter/web/src/strings/types.ts +++ b/chaoscenter/web/src/strings/types.ts @@ -6,6 +6,7 @@ export type PrimitiveObject = Record = ({ hubID.current = chaosHub.id; syncChaosHubMutation({ variables: { projectID: scope.projectID, id: chaosHub.id } }); }} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.Executor} /> )} @@ -125,7 +125,7 @@ export const ChaosHubMenuView: React.FC = ({ setSelectedHubDetails(chaosHub); setEditHubModal(true); }} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.OWNER} /> )} @@ -139,7 +139,7 @@ export const ChaosHubMenuView: React.FC = ({ onClick={() => { deleteChaosHubMutation({ variables: { projectID: scope.projectID, hubID: chaosHub.id } }); }} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.OWNER} /> )} diff --git a/chaoscenter/web/src/views/ChaosHubs/AddHubModal.tsx b/chaoscenter/web/src/views/ChaosHubs/AddHubModal.tsx index eaddafcf587..940a81cc90c 100644 --- a/chaoscenter/web/src/views/ChaosHubs/AddHubModal.tsx +++ b/chaoscenter/web/src/views/ChaosHubs/AddHubModal.tsx @@ -28,7 +28,7 @@ function AddHubModal({ listChaosHubRefetch, disabled }: AddHubModalProviderProps icon="plus" onClick={() => open()} disabled={disabled} - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.OWNER} /> {isOpen && ( close()} className={css.modalWithHelpPanel}> diff --git a/chaoscenter/web/src/views/ChaosProbe/ChaosProbeHeader.tsx b/chaoscenter/web/src/views/ChaosProbe/ChaosProbeHeader.tsx index 18f644d7979..3c126126e6f 100644 --- a/chaoscenter/web/src/views/ChaosProbe/ChaosProbeHeader.tsx +++ b/chaoscenter/web/src/views/ChaosProbe/ChaosProbeHeader.tsx @@ -101,7 +101,7 @@ export default function ChaosProbeHeader({ text={getString('editProbe')} variation={ButtonVariation.SECONDARY} icon="Edit" - permission={PermissionGroup.EDITOR} + permission={PermissionGroup.OWNER} onClick={setEditProbeOpen} /> diff --git a/chaoscenter/web/src/views/ChaosProbes/AddProbeModal.tsx b/chaoscenter/web/src/views/ChaosProbes/AddProbeModal.tsx index efc49df300b..db4c7c5da59 100644 --- a/chaoscenter/web/src/views/ChaosProbes/AddProbeModal.tsx +++ b/chaoscenter/web/src/views/ChaosProbes/AddProbeModal.tsx @@ -87,7 +87,7 @@ export const AddProbeModal = ({ refetchProbes }: RefetchProbes): React.ReactElem { diff --git a/chaoscenter/web/src/views/ChaosProbes/ChaosProbesTableMenu.tsx b/chaoscenter/web/src/views/ChaosProbes/ChaosProbesTableMenu.tsx index 99f21af29c4..e1021660fd0 100644 --- a/chaoscenter/web/src/views/ChaosProbes/ChaosProbesTableMenu.tsx +++ b/chaoscenter/web/src/views/ChaosProbes/ChaosProbesTableMenu.tsx @@ -79,7 +79,7 @@ export const MenuCell = ({ icon="Edit" text={getString('editProbe')} onClick={() => setEditProbe({ name: data.name, infrastructureType: data.infrastructureType })} - permission={PermissionGroup.EDITOR || PermissionGroup.OWNER} + permission={PermissionGroup.OWNER} /> {/* */} @@ -88,7 +88,7 @@ export const MenuCell = ({ icon="main-trash" text={getString('deleteProbe')} onClick={openDeleteProbeDialog} - permission={PermissionGroup.EDITOR || PermissionGroup.OWNER} + permission={PermissionGroup.OWNER} /> diff --git a/chaoscenter/web/src/views/ChaosStudio/StudioActionButtons.tsx b/chaoscenter/web/src/views/ChaosStudio/StudioActionButtons.tsx index d0ece4cfdcc..e605b41ba46 100644 --- a/chaoscenter/web/src/views/ChaosStudio/StudioActionButtons.tsx +++ b/chaoscenter/web/src/views/ChaosStudio/StudioActionButtons.tsx @@ -36,7 +36,7 @@ export default function StudioActionButtons({ )}