From a5eada606a61e714ad71db8ac0ad6fcd015c6e76 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 17 Aug 2021 09:36:14 -0700 Subject: [PATCH] Fixed Max Validity interval for required valid until filter --- .../dynamic-http-metadata-provider.schema.json | 2 +- .../src/main/resources/i18n/messages.properties | 2 ++ .../schema/provider/filebacked-http.schema.json | 2 +- .../app/form/component/widgets/OptionWidget.js | 1 + .../definition/BaseProviderDefinition.js | 17 ++++++++++++----- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/backend/src/main/resources/dynamic-http-metadata-provider.schema.json b/backend/src/main/resources/dynamic-http-metadata-provider.schema.json index 7d799784b..b63277580 100644 --- a/backend/src/main/resources/dynamic-http-metadata-provider.schema.json +++ b/backend/src/main/resources/dynamic-http-metadata-provider.schema.json @@ -412,7 +412,7 @@ "title": "label.max-validity-interval", "description": "tooltip.max-validity-interval", "type": "string", - "pattern": "^(R\\d*\\/)?P(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$" + "pattern": "^$|^(R\\d*\\/)?P(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$" } } }, diff --git a/backend/src/main/resources/i18n/messages.properties b/backend/src/main/resources/i18n/messages.properties index 9789f7299..b01f704ba 100644 --- a/backend/src/main/resources/i18n/messages.properties +++ b/backend/src/main/resources/i18n/messages.properties @@ -491,6 +491,8 @@ label.provider=Metadata Provider message.user-role-admin-group=Cannot change group for ROLE_ADMIN users. +message.duration=Requires a valid ISO 8601 duration (ex. PT2D) + message.delete-user-title=Delete User? message.delete-user-body=You are requesting to delete a user. If you complete this process the user will be removed. This cannot be undone. Do you wish to continue? diff --git a/ui/public/assets/schema/provider/filebacked-http.schema.json b/ui/public/assets/schema/provider/filebacked-http.schema.json index a85d1e400..2a2783843 100644 --- a/ui/public/assets/schema/provider/filebacked-http.schema.json +++ b/ui/public/assets/schema/provider/filebacked-http.schema.json @@ -297,7 +297,7 @@ "title": "label.max-validity-interval", "description": "tooltip.max-validity-interval", "type": "string", - "pattern": "^(R\\d*\\/)?P(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$" + "pattern": "^$|^(R\\d*\\/)?P(?:\\d+(?:\\.\\d+)?Y)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?W)?(?:\\d+(?:\\.\\d+)?D)?(?:T(?:\\d+(?:\\.\\d+)?H)?(?:\\d+(?:\\.\\d+)?M)?(?:\\d+(?:\\.\\d+)?S)?)?$" } } }, diff --git a/ui/src/app/form/component/widgets/OptionWidget.js b/ui/src/app/form/component/widgets/OptionWidget.js index 534595ead..b1b43fee5 100644 --- a/ui/src/app/form/component/widgets/OptionWidget.js +++ b/ui/src/app/form/component/widgets/OptionWidget.js @@ -51,6 +51,7 @@ const OptionWidget = ({ const _onChange = (selected) => { const sel = selected[0]; + const val = typeof sel === 'object' && sel.label ? sel.label : sel; setInputValue(val); onChange(val); diff --git a/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.js b/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.js index c801ddb04..d9eeee51a 100644 --- a/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.js +++ b/ui/src/app/metadata/domain/provider/definition/BaseProviderDefinition.js @@ -24,14 +24,21 @@ export const BaseProviderDefinition = { }, parser: (changes, base) => { - const baseFilters = base ? base.metadataFilters.filter(f => MetadataFilterTypes.indexOf(f['@type']) > -1) : [] + const baseFilters = base ? base.metadataFilters.filter(f => MetadataFilterTypes.indexOf(f['@type']) > -1) : []; const parsed = (changes.metadataFilters ? ({ ...changes, metadataFilters: [ - ...changes.metadataFilters.filter((filter, filterName) => ( - Object.keys(filter).filter(k => k !== '@type').length > 0 - )), + ...changes.metadataFilters.filter((filter, filterName) => { + + if (filter['@type'] === 'RequiredValidUntil') { + if (!filter.maxValidityInterval || filter.maxValidityInterval === "") { + return false; + } + } + + return Object.keys(filter).filter(k => k !== '@type').length > 0; + }), ...baseFilters ] }) : changes); @@ -43,7 +50,7 @@ export const BaseProviderDefinition = { if (!filterSchema || !changes) { return changes; } - + const formatted = (changes.metadataFilters ? ({ ...changes, metadataFilters: Object.values(filterSchema.items).map(item => {