From c826a8d8e9dfccbe8dafb0f916a61450d0908b51 Mon Sep 17 00:00:00 2001 From: sumedhe Date: Mon, 9 May 2022 02:33:00 +0530 Subject: [PATCH] Restrict modifying configurations for Enterprise IDP Login Applications --- apps/console/src/extensions/configs/application.tsx | 11 ++++++++++- .../src/extensions/configs/models/application.ts | 3 +++ .../applications/components/application-list.tsx | 4 +++- .../applications/components/edit-application.tsx | 6 ++++-- .../settings/general-application-settings.tsx | 5 +++++ 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/apps/console/src/extensions/configs/application.tsx b/apps/console/src/extensions/configs/application.tsx index b64572e914f..a720670d3d8 100644 --- a/apps/console/src/extensions/configs/application.tsx +++ b/apps/console/src/extensions/configs/application.tsx @@ -64,7 +64,16 @@ export const applicationConfig: ApplicationConfig = { renderHelpPanelItems: (): ReactNode => { return null; }, - showProvisioningSettings: true + showProvisioningSettings: true, + showDangerZone: (applicationName: string): boolean => { + return true; + }, + showDeleteButton: (applicationName: string): boolean => { + return true; + }, + getTabPanelReadOnlyStatus: (tabPanelName: string, applicationName: string): boolean => { + return false; + } }, excludeIdentityClaims: false, excludeSubjectClaim: false, diff --git a/apps/console/src/extensions/configs/models/application.ts b/apps/console/src/extensions/configs/models/application.ts index b4451721fa2..f5393674114 100644 --- a/apps/console/src/extensions/configs/models/application.ts +++ b/apps/console/src/extensions/configs/models/application.ts @@ -53,6 +53,9 @@ export interface ApplicationConfig { extendTabs: boolean; //should be true for cloud showProvisioningSettings: boolean; renderHelpPanelItems: () => ReactNode; + showDangerZone: (applicationName: string) => boolean; + showDeleteButton: (applicationName: string) => boolean; + getTabPanelReadOnlyStatus: (tabPanelName: string, applicationName: string) => boolean; }; inboundOIDCForm: { shouldValidateCertificate: boolean; diff --git a/apps/console/src/features/applications/components/application-list.tsx b/apps/console/src/features/applications/components/application-list.tsx index 07111ef6710..b01ee62ed9e 100644 --- a/apps/console/src/features/applications/components/application-list.tsx +++ b/apps/console/src/features/applications/components/application-list.tsx @@ -61,6 +61,7 @@ import { ApplicationTemplateListItemInterface } from "../models"; import { ApplicationTemplateManagementUtils } from "../utils"; +import { applicationConfig } from "../../../extensions"; /** * @@ -380,7 +381,8 @@ export const ApplicationList: FunctionComponent = return hasScopes || isSystemApp || - (app?.access === ApplicationAccessTypes.READ); + (app?.access === ApplicationAccessTypes.READ) || + !applicationConfig.editApplication.showDeleteButton(app.name); }, icon: (): SemanticICONS => "trash alternate", onClick: (e: SyntheticEvent, app: ApplicationListItemInterface): void => { diff --git a/apps/console/src/features/applications/components/edit-application.tsx b/apps/console/src/features/applications/components/edit-application.tsx index 64e8e83c3f9..e72c28ca0dc 100755 --- a/apps/console/src/features/applications/components/edit-application.tsx +++ b/apps/console/src/features/applications/components/edit-application.tsx @@ -591,7 +591,8 @@ export const EditApplication: FunctionComponent = onUpdate={ handleApplicationUpdate } featureConfig={ featureConfig } template={ template } - readOnly={ readOnly } + readOnly={ readOnly || applicationConfig.editApplication.getTabPanelReadOnlyStatus( + "APPLICATION_EDIT_GENERAL_SETTINGS", application.name) } data-testid={ `${ testId }-general-settings` } isManagementApp={ application.isManagementApp } /> @@ -620,7 +621,8 @@ export const EditApplication: FunctionComponent = inboundProtocols={ inboundProtocolList } featureConfig={ featureConfig } template={ template } - readOnly={ readOnly } + readOnly={ readOnly || applicationConfig.editApplication.getTabPanelReadOnlyStatus( + "APPLICATION_EDIT_ACCESS_CONFIG", application.name) } data-testid={ `${ testId }-access-settings` } /> diff --git a/apps/console/src/features/applications/components/settings/general-application-settings.tsx b/apps/console/src/features/applications/components/settings/general-application-settings.tsx index c3d29375b65..9b8100f3069 100644 --- a/apps/console/src/features/applications/components/settings/general-application-settings.tsx +++ b/apps/console/src/features/applications/components/settings/general-application-settings.tsx @@ -37,6 +37,7 @@ import { ApplicationTemplateListItemInterface } from "../../models"; import { GeneralDetailsForm } from "../forms"; +import { applicationConfig } from "../../../../extensions"; /** * Proptypes for the applications general details component. @@ -237,6 +238,10 @@ export const GeneralApplicationSettings: FunctionComponent