diff --git a/ui/src/app/metadata/domain/filter/EntityAttributesFilterDefinition.js b/ui/src/app/metadata/domain/filter/EntityAttributesFilterDefinition.js index 8956c9110..c36bcb347 100644 --- a/ui/src/app/metadata/domain/filter/EntityAttributesFilterDefinition.js +++ b/ui/src/app/metadata/domain/filter/EntityAttributesFilterDefinition.js @@ -56,6 +56,19 @@ export const EntityAttributesFilterWizard = { return errors; } }, + warnings: (data) => { + let warnings = {}; + if (!data?.relyingPartyOverrides?.signAssertion && data?.relyingPartyOverrides?.dontSignResponse) { + warnings = { + ...warnings, + 'options': [ + ...(warnings.hasOwnProperty('options') ? warnings['options'] : []), + 'message.invalid-signing' + ] + }; + } + return warnings; + }, parser: (changes) => { return { ...changes, diff --git a/ui/src/app/metadata/domain/source/SourceDefinition.js b/ui/src/app/metadata/domain/source/SourceDefinition.js index 2891ef3bf..6e961b4ac 100644 --- a/ui/src/app/metadata/domain/source/SourceDefinition.js +++ b/ui/src/app/metadata/domain/source/SourceDefinition.js @@ -41,6 +41,21 @@ export const SourceBase = { return errors; } }, + + warnings: (data) => { + let warnings = {}; + if (!data?.relyingPartyOverrides?.signAssertion && data?.relyingPartyOverrides?.dontSignResponse) { + warnings = { + ...warnings, + 'relying-party': [ + ...(warnings.hasOwnProperty('relying-party') ? warnings['relying-party'] : []), + 'message.invalid-signing' + ] + }; + } + return warnings; + }, + uiSchema: { 'ui:order': ['serviceProviderName', '*'], layout: { diff --git a/ui/src/app/metadata/editor/MetadataEditor.js b/ui/src/app/metadata/editor/MetadataEditor.js index 491f06fe9..60ca70d68 100644 --- a/ui/src/app/metadata/editor/MetadataEditor.js +++ b/ui/src/app/metadata/editor/MetadataEditor.js @@ -64,6 +64,8 @@ export function MetadataEditor ({ current }) { const validator = definition.validator(data, current); + const warnings = definition.warnings && definition.warnings(metadata); + return (
+ {warnings && warnings.hasOwnProperty(section) && + + {warnings[section].map((w, widx) => +

+ + +

+ )} +
+ } {errors.length > 0 && -

+

+ + +

}
diff --git a/ui/src/app/metadata/editor/MetadataFilterEditor.js b/ui/src/app/metadata/editor/MetadataFilterEditor.js index f34d676c0..cea26cb27 100644 --- a/ui/src/app/metadata/editor/MetadataFilterEditor.js +++ b/ui/src/app/metadata/editor/MetadataFilterEditor.js @@ -38,6 +38,8 @@ export function MetadataFilterEditor({children}) { const validator = definition.validator(data, current); + const warnings = definition.warnings && definition.warnings(metadata); + return (
@@ -56,10 +58,20 @@ export function MetadataFilterEditor({children}) {
0 ? 'justify-content-between' : 'justify-content-end'}`}> {errors.length > 0 && - +

} + {errors.length === 0 && warnings && warnings.hasOwnProperty(section) && + + {warnings[section].map((w, widx) => +

+ + +

+ )} +
+ }

diff --git a/ui/src/app/metadata/wizard/MetadataSourceWizard.js b/ui/src/app/metadata/wizard/MetadataSourceWizard.js index 1af478d8b..deb7b9bc9 100644 --- a/ui/src/app/metadata/wizard/MetadataSourceWizard.js +++ b/ui/src/app/metadata/wizard/MetadataSourceWizard.js @@ -9,6 +9,12 @@ import { Configuration } from '../hoc/Configuration'; import { useMetadataEntity, useMetadataSources } from '../hooks/api'; import { useHistory } from 'react-router'; import { removeNull } from '../../core/utility/remove_null'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; +import Translate from '../../i18n/components/translate'; +import Alert from 'react-bootstrap/esm/Alert'; +import Row from 'react-bootstrap/esm/Row'; +import Col from 'react-bootstrap/esm/Col'; export function MetadataSourceWizard ({ onShowNav }) { @@ -60,6 +66,7 @@ export function MetadataSourceWizard ({ onShowNav }) { } const validator = definition.validator(data); + const warnings = definition.warnings && definition.warnings(metadata); return ( <> @@ -69,6 +76,18 @@ export function MetadataSourceWizard ({ onShowNav }) {
+ {warnings && warnings.hasOwnProperty(current) && + + + + {warnings[current].map((w, widx) => +

+ )} +
+ +
+
+ }