From 7af7ec28c1ab3945c3e0ea46e4877c126d91de53 Mon Sep 17 00:00:00 2001 From: Marlon Keating Date: Tue, 7 Nov 2023 00:12:09 +0000 Subject: [PATCH] fix: disable creating new SSO config while configuring prior config --- .../settings/SettingsSSOTab/NewExistingSSOConfigs.jsx | 5 ++--- src/components/settings/SettingsSSOTab/index.jsx | 6 +++++- src/components/settings/SettingsSSOTab/utils.js | 9 ++++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/components/settings/SettingsSSOTab/NewExistingSSOConfigs.jsx b/src/components/settings/SettingsSSOTab/NewExistingSSOConfigs.jsx index 6474ef6a59..9ac1d82113 100644 --- a/src/components/settings/SettingsSSOTab/NewExistingSSOConfigs.jsx +++ b/src/components/settings/SettingsSSOTab/NewExistingSSOConfigs.jsx @@ -11,6 +11,7 @@ import { connect } from 'react-redux'; import LmsApiService from '../../../data/services/LmsApiService'; import NewSSOConfigAlerts from './NewSSOConfigAlerts'; import NewSSOConfigCard from './NewSSOConfigCard'; +import { isInProgressConfig } from './utils'; const FRESH_CONFIG_POLLING_INTERVAL = 30000; const UPDATED_CONFIG_POLLING_INTERVAL = 2000; @@ -66,9 +67,7 @@ const NewExistingSSOConfigs = ({ useEffect(() => { const [active, inactive] = _.partition(configs, config => config.active); - const inProgress = configs.filter( - config => (config.submitted_at && !config.configured_at) || (config.configured_at < config.submitted_at), - ); + const inProgress = configs.filter(isInProgressConfig); const untested = configs.filter(config => !config.validated_at); const live = configs.filter( config => (config.validated_at && config.active && config.validated_at > config.configured_at), diff --git a/src/components/settings/SettingsSSOTab/index.jsx b/src/components/settings/SettingsSSOTab/index.jsx index b1181c6817..a1f5599415 100644 --- a/src/components/settings/SettingsSSOTab/index.jsx +++ b/src/components/settings/SettingsSSOTab/index.jsx @@ -13,6 +13,7 @@ import NewSSOConfigForm from './NewSSOConfigForm'; import { SSOConfigContext, SSOConfigContextProvider } from './SSOConfigContext'; import LmsApiService from '../../../data/services/LmsApiService'; import { features } from '../../../config'; +import { isInProgressConfig } from './utils'; const SettingsSSOTab = ({ enterpriseId, setHasSSOConfig }) => { const { @@ -51,6 +52,8 @@ const SettingsSSOTab = ({ enterpriseId, setHasSSOConfig }) => { }, [AUTH0_SELF_SERVICE_INTEGRATION, existingConfigs, setHasSSOConfig]); if (AUTH0_SELF_SERVICE_INTEGRATION) { + const newButtonVisible = existingConfigs?.length > 0 && (providerConfig === null); + const newButtonDisabled = existingConfigs.some(isInProgressConfig); return (
{

Single Sign-On (SSO) Integrations

- {existingConfigs?.length > 0 && (providerConfig === null) && ( + {newButtonVisible && ( diff --git a/src/components/settings/SettingsSSOTab/utils.js b/src/components/settings/SettingsSSOTab/utils.js index d57a8d185c..e9fd44a082 100644 --- a/src/components/settings/SettingsSSOTab/utils.js +++ b/src/components/settings/SettingsSSOTab/utils.js @@ -26,4 +26,11 @@ function createSAMLURLs({ return { testLink, spMetadataLink }; } -export { updateSamlProviderData, deleteSamlProviderData, createSAMLURLs }; +function isInProgressConfig(config) { + return (config.submitted_at && !config.configured_at) + || config.configured_at < config.submitted_at; +} + +export { + updateSamlProviderData, deleteSamlProviderData, createSAMLURLs, isInProgressConfig, +};