summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2014-05-29 14:27:08 +0200
committerPetr Vobornik <pvoborni@redhat.com>2014-06-12 09:56:49 +0200
commitf1b83198da67b6cbf49209371b8a96536a13703e (patch)
tree9e63878a5a0ef62ff87f58d7186ac8185f427bb7
parentf0c19f907e27f2cd80b68ae32d20befe847ba443 (diff)
downloadfreeipa-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.js54
-rw-r--r--install/ui/src/freeipa/sudo.js68
-rw-r--r--ipatests/test_webui/test_sudo.py2
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):