diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2014-05-29 14:27:08 +0200 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2014-06-12 09:56:49 +0200 |
commit | f1b83198da67b6cbf49209371b8a96536a13703e (patch) | |
tree | 9e63878a5a0ef62ff87f58d7186ac8185f427bb7 | |
parent | f0c19f907e27f2cd80b68ae32d20befe847ba443 (diff) | |
download | freeipa-f1b83198da67b6cbf49209371b8a96536a13703e.tar.gz freeipa-f1b83198da67b6cbf49209371b8a96536a13703e.tar.xz freeipa-f1b83198da67b6cbf49209371b8a96536a13703e.zip |
webui: control sudo rule deny command tables by category switch
`memberdenycmd_sudocmd` and `memberdenycmd_sudocmdgroup` tables are now
enabled/disabled based on `cmdcategory` as well.
https://fedorahosted.org/freeipa/ticket/4361
Reviewed-By: Nathaniel McCallum <npmccallum@redhat.com>
-rw-r--r-- | install/ui/src/freeipa/rule.js | 54 | ||||
-rw-r--r-- | install/ui/src/freeipa/sudo.js | 68 | ||||
-rw-r--r-- | ipatests/test_webui/test_sudo.py | 2 |
3 files changed, 63 insertions, 61 deletions
diff --git a/install/ui/src/freeipa/rule.js b/install/ui/src/freeipa/rule.js index f8d182b38..7ad08e1f2 100644 --- a/install/ui/src/freeipa/rule.js +++ b/install/ui/src/freeipa/rule.js @@ -43,9 +43,10 @@ IPA.rule_details_widget = function(spec) { that.init = function() { - that.enable_radio = IPA.radio_widget({ + that.enable_radio = IPA.rule_radio_widget({ name: that.radio_name, - options: that.options + options: that.options, + entity: that.entity }); that.widgets.add_widget(that.enable_radio); @@ -65,41 +66,38 @@ IPA.rule_details_widget = function(spec) { } }; - that.create = function(container) { - - that.container = container; + that.init(); - //enable radios - var param_info = IPA.get_entity_param(that.entity.name, that.radio_name); - var title = param_info ? param_info.doc : that.radio_name; - var enable_radio_container = $('<div/>', { - name: that.radio_name, - title: title, - 'class': 'field' - }).appendTo(container); + return that; +}; - enable_radio_container.append(title+': '); - that.enable_radio.create(enable_radio_container); +/** + * Rule radio widget + * + * Intended to be used especially by rule widget. + * + * @class IPA.rule_radio_widget + * @extends IPA.radio_widget + */ +IPA.rule_radio_widget = function(spec) { - //tables - for (var j=0; j<that.tables.length; j++) { - var table = that.tables[j]; + spec = spec || {}; + var that = IPA.radio_widget(spec); - var metadata = IPA.get_entity_param(that.entity.name, table.name); + /** @inheritDoc */ + that.create = function(container) { - var table_container = $('<div/>', { - name: table.name, - title: metadata ? metadata.doc : table.name, - 'class': 'field' - }).appendTo(container); + var param_info = IPA.get_entity_param(that.entity.name, that.name); + var title = param_info ? param_info.doc : that.name; - var widget = that.widgets.get_widget(table.name); - widget.create(table_container); + container.append(title + ': '); + that.widget_create(container); + that.owb_create(container); + if (that.undo) { + that.create_undo(container); } }; - that.init(); - return that; }; diff --git a/install/ui/src/freeipa/sudo.js b/install/ui/src/freeipa/sudo.js index 58c01fcb2..806a472ce 100644 --- a/install/ui/src/freeipa/sudo.js +++ b/install/ui/src/freeipa/sudo.js @@ -460,13 +460,13 @@ var add_sudorule_details_facet_widgets = function (spec) { { $type: 'rule_association_table', name: 'memberdenycmd_sudocmd', - widget: 'command.memberdenycmd_sudocmd', + widget: 'command.rule.memberdenycmd_sudocmd', priority: IPA.sudo.remove_method_priority }, { $type: 'rule_association_table', name: 'memberdenycmd_sudocmdgroup', - widget: 'command.memberdenycmd_sudocmdgroup', + widget: 'command.rule.memberdenycmd_sudocmdgroup', priority: IPA.sudo.remove_method_priority } ); @@ -478,12 +478,6 @@ var add_sudorule_details_facet_widgets = function (spec) { label: '@i18n:objects.sudorule.command', widgets: [ { - $factory: IPA.header_widget, - name: 'allow_header', - text: '@i18n:objects.sudorule.allow', - description: '@i18n:objects.sudorule.allow' - }, - { $factory: IPA.rule_details_widget, name: 'rule', radio_name: 'cmdcategory', @@ -499,10 +493,18 @@ var add_sudorule_details_facet_widgets = function (spec) { ], tables: [ { name: 'memberallowcmd_sudocmd' }, - { name: 'memberallowcmd_sudocmdgroup' } + { name: 'memberallowcmd_sudocmdgroup' }, + { name: 'memberdenycmd_sudocmd' }, + { name: 'memberdenycmd_sudocmdgroup' } ], widgets: [ { + $factory: IPA.header_widget, + name: 'allow_header', + text: '@i18n:objects.sudorule.allow', + description: '@i18n:objects.sudorule.allow' + }, + { $type: 'rule_association_table', id: 'sudorule-memberallowcmd_sudocmd', name: 'memberallowcmd_sudocmd', @@ -519,32 +521,32 @@ var add_sudorule_details_facet_widgets = function (spec) { remove_method: 'remove_allow_command', add_title: '@i18n:association.add.memberallowcmd', remove_title: '@i18n:association.remove.memberallowcmd' + }, + { + $factory: IPA.header_widget, + name: 'deny_header', + text: '@i18n:objects.sudorule.deny', + description: '@i18n:objects.sudorule.deny' + }, + { + $type: 'rule_association_table', + id: 'sudorule-memberdenycmd_sudocmd', + name: 'memberdenycmd_sudocmd', + add_method: 'add_deny_command', + remove_method: 'remove_deny_command', + add_title: '@i18n:association.add.memberdenycmd', + remove_title: '@i18n:association.remove.memberdenycmd' + }, + { + $type: 'rule_association_table', + id: 'sudorule-memberdenycmd_sudocmdgroup', + name: 'memberdenycmd_sudocmdgroup', + add_method: 'add_deny_command', + remove_method: 'remove_deny_command', + add_title: '@i18n:association.add.memberdenycmd', + remove_title: '@i18n:association.remove.memberdenycmd' } ] - }, - { - $factory: IPA.header_widget, - name: 'deny_header', - text: '@i18n:objects.sudorule.deny', - description: '@i18n:objects.sudorule.deny' - }, - { - $type: 'rule_association_table', - id: 'sudorule-memberdenycmd_sudocmd', - name: 'memberdenycmd_sudocmd', - add_method: 'add_deny_command', - remove_method: 'remove_deny_command', - add_title: '@i18n:association.add.memberdenycmd', - remove_title: '@i18n:association.remove.memberdenycmd' - }, - { - $type: 'rule_association_table', - id: 'sudorule-memberdenycmd_sudocmdgroup', - name: 'memberdenycmd_sudocmdgroup', - add_method: 'add_deny_command', - remove_method: 'remove_deny_command', - add_title: '@i18n:association.add.memberdenycmd', - remove_title: '@i18n:association.remove.memberdenycmd' } ] } diff --git a/ipatests/test_webui/test_sudo.py b/ipatests/test_webui/test_sudo.py index acc1373ea..94e0892b0 100644 --- a/ipatests/test_webui/test_sudo.py +++ b/ipatests/test_webui/test_sudo.py @@ -111,6 +111,8 @@ class test_sudo(UI_driver): self.delete(group.ENTITY, [group.DATA, group.DATA2]) self.delete(HOST_ENTITY, [host.data, host.data2]) self.delete(hostgroup.ENTITY, [hostgroup.DATA, hostgroup.DATA2]) + self.delete(sudo.CMDENTITY, [sudo.CMD_DATA, sudo.CMD_DATA2]) + self.delete(sudo.CMDGROUP_ENTITY, [sudo.CMDGROUP_DATA, sudo.CMDGROUP_DATA2]) @screenshot def test_actions(self): |