commit 615535485af020dc8effa1b6a342af812da5d368 Author: CentOS Sources Date: Tue Nov 3 19:59:32 2020 -0500 import ipa-4.8.7-13.module+el8.3.0+8376+0bba7131 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb27ffd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/freeipa-4.8.7.tar.gz diff --git a/.ipa.metadata b/.ipa.metadata new file mode 100644 index 0000000..f2e66c8 --- /dev/null +++ b/.ipa.metadata @@ -0,0 +1 @@ +0099d799a77a757eeb4a95a69a38bdec24e45026 SOURCES/freeipa-4.8.7.tar.gz diff --git a/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch b/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch new file mode 100644 index 0000000..34580fe --- /dev/null +++ b/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch @@ -0,0 +1,409 @@ +From c2ba333b9681d008d9c528a79dbdd76ce11a3ecd Mon Sep 17 00:00:00 2001 +From: Serhii Tsymbaliuk +Date: Thu, 28 May 2020 08:47:49 +0200 +Subject: [PATCH 01/22] WebUI: Fix "IPA Error 3007: RequirmentError" while + adding idoverrideuser association + +Add builder for association adder dialog which allows to override behavior of the component. +Replace default implementation with a custom one for idoverrideuser. +Replace text filter with 'ID view' select box in the idoverrideuser dialog. + +Ticket: https://pagure.io/freeipa/issue/8335 + +Signed-off-by: Serhii Tsymbaliuk +Reviewed-By: Alexander Bokovoy +--- + install/ui/src/freeipa/association.js | 13 ++++- + install/ui/src/freeipa/dialog.js | 73 ++++++++++++++++----------- + install/ui/src/freeipa/group.js | 14 +++++ + install/ui/src/freeipa/idviews.js | 58 +++++++++++++++++++++ + ipaserver/plugins/internal.py | 6 +++ + 5 files changed, 133 insertions(+), 31 deletions(-) + +diff --git a/install/ui/src/freeipa/association.js b/install/ui/src/freeipa/association.js +index f10ccb2a5..b083a79f9 100644 +--- a/install/ui/src/freeipa/association.js ++++ b/install/ui/src/freeipa/association.js +@@ -25,6 +25,7 @@ + define([ + 'dojo/_base/lang', + 'dojo/Deferred', ++ './builder', + './metadata', + './ipa', + './jquery', +@@ -38,7 +39,7 @@ define([ + './facet', + './search', + './dialog'], +- function(lang, Deferred, metadata_provider, IPA, $, metadata, ++ function(lang, Deferred, builder, metadata_provider, IPA, $, metadata, + navigation, phases, reg, rpc, su, text) { + + /** +@@ -1209,7 +1210,8 @@ exp.association_facet = IPA.association_facet = function (spec, no_init) { + + var pkeys = that.data.result.result[that.get_attribute_name()]; + +- var dialog = IPA.association_adder_dialog({ ++ var dialog = builder.build('association_adder_dialog', { ++ $type: that.other_entity.name, + title: title, + entity: that.entity, + pkey: pkey, +@@ -1675,6 +1677,13 @@ IPA.attr_read_only_evaluator = function(spec) { + return that; + }; + ++// Create a registry for adder dialogs where key is name of 'other entity'. ++// It allows to override dialogs for some specific cases of association ++// creation. ++var dialog_builder = builder.get('association_adder_dialog'); ++dialog_builder.factory = IPA.association_adder_dialog; ++reg.set('association_adder_dialog', dialog_builder.registry); ++ + phases.on('registration', function() { + var w = reg.widget; + var f = reg.field; +diff --git a/install/ui/src/freeipa/dialog.js b/install/ui/src/freeipa/dialog.js +index c153120df..d67d63b6d 100644 +--- a/install/ui/src/freeipa/dialog.js ++++ b/install/ui/src/freeipa/dialog.js +@@ -919,35 +919,7 @@ IPA.adder_dialog = function(spec) { + 'class': 'input-group col-md-12 adder-dialog-top' + }).appendTo(container); + +- var filter_placeholder = text.get('@i18n:association.filter_placeholder'); +- filter_placeholder = filter_placeholder.replace('${other_entity}', +- that.other_entity.metadata.label); +- +- that.filter_field = $('', { +- type: 'text', +- name: 'filter', +- 'class': 'form-control', +- 'placeholder': filter_placeholder, +- keyup: function(event) { +- if (event.keyCode === keys.ENTER) { +- that.search(); +- return false; +- } +- } +- }).appendTo(input_group); +- +- var input_group_btn = $('
', { +- 'class': 'input-group-btn' +- }).appendTo(input_group); +- +- that.find_button = IPA.button({ +- name: 'find', +- label: '@i18n:buttons.filter', +- click: function() { +- that.search(); +- return false; +- } +- }).appendTo(input_group_btn); ++ that.filter_field = that.get_filter_field(input_group); + + var row = $('
', { 'class': 'row adder-dialog-main'}).appendTo(container); + // +@@ -1132,6 +1104,49 @@ IPA.adder_dialog = function(spec) { + return that.filter_field.val(); + }; + ++ /** ++ * Return field for filtering available items ++ * ++ * Default implementation returns text input + "Filter" button. ++ * It can be overridden. ++ * ++ * @param {HTMLElement} input_group - container for a filter field ++ * @return {HTMLElement} ++ */ ++ that.get_filter_field = function(input_group) { ++ var filter_placeholder = text.get( ++ '@i18n:association.filter_placeholder' ++ ).replace('${other_entity}', that.other_entity.metadata.label); ++ ++ var filter_field = $('', { ++ type: 'text', ++ name: 'filter', ++ 'class': 'form-control', ++ 'placeholder': filter_placeholder, ++ keyup: function(event) { ++ if (event.keyCode === keys.ENTER) { ++ that.search(); ++ return false; ++ } ++ } ++ }).appendTo(input_group); ++ ++ var input_group_btn = $('
', { ++ 'class': 'input-group-btn' ++ }).appendTo(input_group); ++ ++ that.find_button = IPA.button({ ++ name: 'find', ++ label: '@i18n:buttons.filter', ++ click: function() { ++ that.search(); ++ return false; ++ } ++ }).appendTo(input_group_btn); ++ ++ return filter_field; ++ }; ++ + /** + * Clear rows in available table + */ +diff --git a/install/ui/src/freeipa/group.js b/install/ui/src/freeipa/group.js +index e46d8c7e3..2984bd4b2 100644 +--- a/install/ui/src/freeipa/group.js ++++ b/install/ui/src/freeipa/group.js +@@ -205,6 +205,20 @@ return { + add_title: '@i18n:objects.group.add_into_sudo', + remove_method: 'remove_user', + remove_title: '@i18n:objects.group.remove_from_sudo' ++ }, ++ { ++ $type: 'association', ++ name: 'member_idoverrideuser', ++ associator: IPA.serial_associator, ++ add_title: '@i18n:objects.group.add_idoverride_user', ++ remove_title: '@i18n:objects.group.remove_idoverride_users', ++ columns: [ ++ { ++ name: 'ipaanchoruuid', ++ label: '@i18n:objects.idoverrideuser.anchor_label', ++ link: false ++ } ++ ] + } + ], + standard_association_facets: true, +diff --git a/install/ui/src/freeipa/idviews.js b/install/ui/src/freeipa/idviews.js +index 35dc998c8..a4fca6205 100644 +--- a/install/ui/src/freeipa/idviews.js ++++ b/install/ui/src/freeipa/idviews.js +@@ -966,6 +966,58 @@ idviews.unapply_action = function(spec) { + return that; + }; + ++idviews.idoverrideuser_adder_dialog = function(spec) { ++ ++ spec = spec || {}; ++ ++ var that = IPA.association_adder_dialog(spec); ++ ++ that.base_search = that.search; ++ ++ that.search = function() { ++ // Search for users only in case a ID view is selected ++ if (that.get_filter()) { ++ that.base_search(); ++ } ++ }; ++ ++ /** ++ * Replace default text filter with a select box for filtering by ID view ++ */ ++ that.get_filter_field = function(input_group) { ++ ++ var filter_field = $('