diff --git a/portal-ui/src/screens/Console/IDP/LDAP/IDPLDAPConfigurationDetails.tsx b/portal-ui/src/screens/Console/IDP/LDAP/IDPLDAPConfigurationDetails.tsx index f9a9efa5f..f020dc1f9 100644 --- a/portal-ui/src/screens/Console/IDP/LDAP/IDPLDAPConfigurationDetails.tsx +++ b/portal-ui/src/screens/Console/IDP/LDAP/IDPLDAPConfigurationDetails.tsx @@ -18,15 +18,20 @@ import React, { Fragment, useEffect, useState } from "react"; import { Box, Button, + ConsoleIcon, EditIcon, FormLayout, Grid, + HelpBox, InputBox, Loader, PageLayout, RefreshIcon, Switch, Tabs, + Tooltip, + ValuePair, + WarnIcon, } from "mds"; import { api } from "api"; import { ConfigurationKV } from "api/consoleApi"; @@ -40,7 +45,6 @@ import { } from "../../../../systemSlice"; import { ldapFormFields, ldapHelpBoxContents } from "../utils"; import ScreenTitle from "../../Common/ScreenTitle/ScreenTitle"; -import LabelValuePair from "../../Common/UsageBarWrapper/LabelValuePair"; import PageHeaderWrapper from "../../Common/PageHeaderWrapper/PageHeaderWrapper"; import AddIDPConfigurationHelpBox from "../AddIDPConfigurationHelpbox"; import LDAPEntitiesQuery from "./LDAPEntitiesQuery"; @@ -63,12 +67,14 @@ const IDPLDAPConfigurationDetails = () => { const [isEnabled, setIsEnabled] = useState(false); const [hasConfiguration, setHasConfiguration] = useState(false); const [fields, setFields] = useState({}); + const [overrideFields, setOverrideFields] = useState({}); const [record, setRecord] = useState( undefined, ); const [editMode, setEditMode] = useState(false); const [resetOpen, setResetOpen] = useState(false); const [curTab, setCurTab] = useState("configuration"); + const [envOverride, setEnvOverride] = useState(false); const toggleEditMode = () => { if (editMode && record) { @@ -79,13 +85,20 @@ const IDPLDAPConfigurationDetails = () => { const parseFields = (record: ConfigurationKV[]) => { let fields: any = {}; + let ovrFlds: any = {}; if (record && record.length > 0) { const enabled = record.find((item: any) => item.key === "enable"); let totalCoincidences = 0; + let totalOverride = 0; record.forEach((item: any) => { - fields[item.key] = item.value; + if (item.env_override) { + fields[item.key] = item.env_override.value; + ovrFlds[item.key] = item.env_override.name; + } else { + fields[item.key] = item.value; + } if ( enabledConfigLDAP.includes(item.key) && @@ -96,16 +109,27 @@ const IDPLDAPConfigurationDetails = () => { ) { totalCoincidences++; } + + if (enabledConfigLDAP.includes(item.key) && item.env_override) { + totalOverride++; + } }); - const hasConfig = totalCoincidences === enabledConfigLDAP.length; - if (hasConfig && enabled && enabled.value !== "off") { + + const hasConfig = totalCoincidences !== 0; + + if (hasConfig && ((enabled && enabled.value !== "off") || !enabled)) { setIsEnabled(true); } else { setIsEnabled(false); } + if (totalOverride !== 0) { + setEnvOverride(true); + } + setHasConfiguration(hasConfig); } + setOverrideFields(ovrFlds); setFields(fields); }; @@ -164,6 +188,7 @@ const IDPLDAPConfigurationDetails = () => { setRecord(keyVals); parseFields(keyVals); dispatch(setServerNeedsRestart(res.data.restart || false)); + setFields({ ...fields, lookup_bind_password: "" }); if (!res.data.restart) { dispatch(setSnackBarMessage("Configuration saved successfully")); @@ -281,22 +306,41 @@ const IDPLDAPConfigurationDetails = () => { actions={ !editMode ? ( -