summaryrefslogtreecommitdiffstats
path: root/install/ui/sudo.js
diff options
context:
space:
mode:
Diffstat (limited to 'install/ui/sudo.js')
-rw-r--r--install/ui/sudo.js930
1 files changed, 0 insertions, 930 deletions
diff --git a/install/ui/sudo.js b/install/ui/sudo.js
deleted file mode 100644
index fddcda0b..00000000
--- a/install/ui/sudo.js
+++ /dev/null
@@ -1,930 +0,0 @@
-/*jsl:import ipa.js */
-
-/* Authors:
- * Endi Sukma Dewata <edewata@redhat.com>
- *
- * Copyright (C) 2010 Red Hat
- * see file 'COPYING' for use and warranty information
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/* REQUIRES: ipa.js, details.js, search.js, add.js, facet.js, entity.js */
-
-IPA.sudo = {
- //priority of commands in details facet
- remove_method_priority: IPA.config.default_priority - 1
-};
-
-IPA.sudo.rule_entity = function(spec) {
-
- var that = IPA.entity(spec);
-
- that.init = function() {
- that.entity_init();
-
- that.builder.search_facet({
- row_enabled_attribute: 'ipaenabledflag',
- columns: [
- 'cn',
- {
- name: 'ipaenabledflag',
- label: IPA.messages.status.label,
- formatter: IPA.boolean_status_formatter()
- },
- 'description'
- ],
- actions: [
- IPA.batch_disable_action,
- IPA.batch_enable_action
- ],
- control_buttons: [
- {
- name: 'disable',
- label: IPA.messages.buttons.disable,
- icon: 'disabled-icon'
- },
- {
- name: 'enable',
- label: IPA.messages.buttons.enable,
- icon: 'enabled-icon'
- }
- ]
- }).
- details_facet({
- factory: IPA.sudorule_details_facet,
- entity: that,
- command_mode: 'info',
- actions: [
- IPA.select_action,
- IPA.enable_action,
- IPA.disable_action,
- IPA.delete_action
- ],
- header_actions: ['select_action', 'enable', 'disable', 'delete'],
- state: {
- evaluators: [
- {
- factory: IPA.enable_state_evaluator,
- field: 'ipaenabledflag'
- }
- ],
- summary_conditions: [
- IPA.enabled_summary_cond(),
- IPA.disabled_summary_cond()
- ]
- }
- }).
- adder_dialog({
- fields: [ 'cn' ]
- });
- };
-
- return that;
-};
-
-IPA.sudo.command_entity = function(spec) {
-
- var that = IPA.entity(spec);
-
- that.init = function() {
- that.entity_init();
-
- that.builder.search_facet({
- columns: [
- 'sudocmd',
- 'description'
- ]
- }).
- details_facet({
- sections: [
- {
- name: 'general',
- label: IPA.messages.details.general,
- fields: [
- 'sudocmd',
- {
- type: 'textarea',
- name: 'description'
- }
- ]
- }
- ]
- }).
- association_facet({
- name: 'memberof_sudocmdgroup',
- associator: IPA.serial_associator,
- columns:[
- 'cn',
- 'description'
- ],
- adder_columns: [
- {
- name: 'cn',
- primary_key: true,
- width: '100px'
- },
- {
- name: 'description',
- width: '100px'
- }
- ]
- }).
- standard_association_facets().
- adder_dialog({
- fields: [
- 'sudocmd',
- {
- type: 'textarea',
- name: 'description'
- }
- ]
- });
- };
-
- return that;
-};
-
-IPA.sudo.command_group_entity = function(spec) {
-
- var that = IPA.entity(spec);
-
- that.init = function() {
- that.entity_init();
-
- that.builder.search_facet({
- columns: [
- 'cn',
- 'description'
- ]
- }).
- details_facet({
- sections: [
- {
- name: 'general',
- label: IPA.messages.details.general,
- fields: [
- 'cn',
- {
- type: 'textarea',
- name: 'description'
- }
- ]
- }
- ]
- }).
- association_facet({
- name: 'member_sudocmd',
- columns: [
- 'sudocmd',
- 'description'
- ],
- adder_columns: [
- {
- name: 'sudocmd',
- primary_key: true,
- width: '100px'
- },
- {
- name: 'description',
- width: '100px'
- }
- ]
- }).
- standard_association_facets().
- adder_dialog({
- fields: [
- 'cn',
- {
- type: 'textarea',
- name: 'description'
- }
- ]
- });
- };
-
- return that;
-};
-
-IPA.sudorule_details_facet = function(spec) {
-
- var entity_name = spec.entity.name;
-
- //
- // General
- //
-
- spec.fields = [
- {
- name: 'cn',
- read_only: true,
- widget: 'general.cn'
- },
- {
- type: 'textarea',
- name: 'description',
- widget: 'general.description'
- }
- ];
-
- spec.widgets = [
- {
- type: 'details_table_section',
- name: 'general',
- label: IPA.messages.details.general,
- widgets: [
- {
- name: 'cn'
- },
- {
- type: 'textarea',
- name: 'description'
- }
- ]
- }
- ];
-
- //
- // Options
- //
-
- spec.fields.push(
- {
- name: 'ipasudoopt',
- widget: 'options.ipasudoopt'
- }
- );
-
- spec.widgets.push(
- {
- factory: IPA.sudo.options_section,
- name: 'options',
- label: IPA.messages.objects.sudorule.options,
- facet: that
- }
- );
-
- //
- // Users
- //
-
- spec.fields.push(
- {
- type: 'radio',
- name: 'usercategory',
- widget: 'user.rule.usercategory'
- },
- {
- type: 'rule_association_table',
- name: 'memberuser_user',
- widget: 'user.rule.memberuser_user',
- external: 'externaluser',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'rule_association_table',
- name: 'memberuser_group',
- widget: 'user.rule.memberuser_group',
- priority: IPA.sudo.remove_method_priority
- }
- );
-
- spec.widgets.push(
- {
- factory: IPA.collapsible_section,
- name: 'user',
- label: IPA.messages.objects.sudorule.user,
- widgets: [
- {
- factory: IPA.rule_details_widget,
- name: 'rule',
- radio_name: 'usercategory',
- options: [
- {
- value: 'all',
- label: IPA.messages.objects.sudorule.anyone
- },
- {
- value: '',
- label: IPA.messages.objects.sudorule.specified_users
- }
- ],
- tables: [
- { name: 'memberuser_user' },
- { name: 'memberuser_group' }
- ],
- widgets: [
- {
- type: 'rule_association_table',
- id: entity_name+'-memberuser_user',
- name: 'memberuser_user',
- add_method: 'add_user',
- remove_method: 'remove_user',
- external: 'externaluser',
- add_title: IPA.messages.association.add.member,
- remove_title: IPA.messages.association.remove.member
- },
- {
- type: 'rule_association_table',
- id: entity_name+'-memberuser_group',
- name: 'memberuser_group',
- add_method: 'add_user',
- remove_method: 'remove_user',
- add_title: IPA.messages.association.add.member,
- remove_title: IPA.messages.association.remove.member
- }
- ]
- }
- ]
- }
- );
-
- //
- // Hosts
- //
-
- spec.fields.push(
- {
- type: 'radio',
- name: 'hostcategory',
- widget: 'host.rule.hostcategory'
- },
- {
- type: 'rule_association_table',
- name: 'memberhost_host',
- widget: 'host.rule.memberhost_host',
- external: 'externalhost',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'rule_association_table',
- name: 'memberhost_hostgroup',
- widget: 'host.rule.memberhost_hostgroup',
- priority: IPA.sudo.remove_method_priority
- }
- );
-
- spec.widgets.push(
- {
- factory: IPA.collapsible_section,
- name: 'host',
- label: IPA.messages.objects.sudorule.host,
- widgets: [
- {
- factory: IPA.rule_details_widget,
- name: 'rule',
- radio_name: 'hostcategory',
- options: [
- {
- 'value': 'all',
- 'label': IPA.messages.objects.sudorule.any_host
- },
- {
- 'value': '',
- 'label': IPA.messages.objects.sudorule.specified_hosts
- }
- ],
- tables: [
- { 'name': 'memberhost_host' },
- { 'name': 'memberhost_hostgroup' }
- ],
- widgets: [
- {
- type: 'rule_association_table',
- id: entity_name+'-memberuser_user',
- name: 'memberhost_host',
- add_method: 'add_host',
- remove_method: 'remove_host',
- external: 'externalhost',
- add_title: IPA.messages.association.add.member,
- remove_title: IPA.messages.association.remove.member
- },
- {
- type: 'rule_association_table',
- id: entity_name+'-memberuser_group',
- name: 'memberhost_hostgroup',
- add_method: 'add_host',
- remove_method: 'remove_host',
- add_title: IPA.messages.association.add.member,
- remove_title: IPA.messages.association.remove.member
- }
- ]
- }
- ]
- }
- );
-
- //
- // Run Commands
- //
-
- spec.fields.push(
- {
- type: 'radio',
- name: 'cmdcategory',
- widget: 'command.rule.cmdcategory'
- },
- {
- type: 'rule_association_table',
- name: 'memberallowcmd_sudocmd',
- widget: 'command.rule.memberallowcmd_sudocmd',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'rule_association_table',
- name: 'memberallowcmd_sudocmdgroup',
- widget: 'command.rule.memberallowcmd_sudocmdgroup',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'rule_association_table',
- name: 'memberdenycmd_sudocmd',
- widget: 'command.memberdenycmd_sudocmd',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'rule_association_table',
- name: 'memberdenycmd_sudocmdgroup',
- widget: 'command.memberdenycmd_sudocmdgroup',
- priority: IPA.sudo.remove_method_priority
- }
- );
-
- spec.widgets.push(
- {
- factory: IPA.collapsible_section,
- name: 'command',
- label: IPA.messages.objects.sudorule.command,
- widgets: [
- {
- factory: IPA.header_widget,
- name: 'allow_header',
- text: IPA.messages.objects.sudorule.allow,
- description: IPA.messages.objects.sudorule.allow
- },
- {
- factory: IPA.rule_details_widget,
- name: 'rule',
- radio_name: 'cmdcategory',
- options: [
- {
- value: 'all',
- label: IPA.messages.objects.sudorule.any_command
- },
- {
- value: '',
- label: IPA.messages.objects.sudorule.specified_commands
- }
- ],
- tables: [
- { name: 'memberallowcmd_sudocmd' },
- { name: 'memberallowcmd_sudocmdgroup' }
- ],
- widgets: [
- {
- type: 'rule_association_table',
- id: entity_name+'-memberallowcmd_sudocmd',
- name: 'memberallowcmd_sudocmd',
- add_method: 'add_allow_command',
- remove_method: 'remove_allow_command',
- add_title: IPA.messages.association.add.memberallowcmd,
- remove_title: IPA.messages.association.remove.memberallowcmd
- },
- {
- type: 'rule_association_table',
- id: entity_name+'-memberallowcmd_sudocmdgroup',
- name: 'memberallowcmd_sudocmdgroup',
- add_method: 'add_allow_command',
- remove_method: 'remove_allow_command',
- add_title: IPA.messages.association.add.memberallowcmd,
- remove_title: IPA.messages.association.remove.memberallowcmd
- }
- ]
- },
- {
- factory: IPA.header_widget,
- name: 'deny_header',
- text: IPA.messages.objects.sudorule.deny,
- description: IPA.messages.objects.sudorule.deny
- },
- {
- type: 'rule_association_table',
- id: entity_name+'-memberdenycmd_sudocmd',
- name: 'memberdenycmd_sudocmd',
- add_method: 'add_deny_command',
- remove_method: 'remove_deny_command',
- add_title: IPA.messages.association.add.memberdenycmd,
- remove_title: IPA.messages.association.remove.memberdenycmd
- },
- {
- type: 'rule_association_table',
- id: entity_name+'-memberdenycmd_sudocmdgroup',
- name: 'memberdenycmd_sudocmdgroup',
- add_method: 'add_deny_command',
- remove_method: 'remove_deny_command',
- add_title: IPA.messages.association.add.memberdenycmd,
- remove_title: IPA.messages.association.remove.memberdenycmd
- }
- ]
- }
- );
-
- //
- // As whom
- //
-
- spec.fields.push(
- {
- type: 'radio',
- name: 'ipasudorunasusercategory',
- widget: 'runas.runas_users.ipasudorunasusercategory'
- },
- {
- type: 'rule_association_table',
- name: 'ipasudorunas_user',
- widget: 'runas.runas_users.ipasudorunas_user',
- external: 'ipasudorunasextuser',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'rule_association_table',
- name: 'ipasudorunas_group',
- widget: 'runas.runas_users.ipasudorunas_group',
- priority: IPA.sudo.remove_method_priority
- },
- {
- type: 'radio',
- name: 'ipasudorunasgroupcategory',
- widget: 'runas.runas_groups.ipasudorunasgroupcategory'
- },
- {
- type: 'rule_association_table',
- name: 'ipasudorunasgroup_group',
- widget: 'runas.runas_groups.ipasudorunasgroup_group',
- external: 'ipasudorunasextgroup',
- priority: IPA.sudo.remove_method_priority
- }
- );
-
- spec.widgets.push(
- {
- factory: IPA.collapsible_section,
- name: 'runas',
- label: IPA.messages.objects.sudorule.runas,
- widgets: [
- {
- factory: IPA.rule_details_widget,
- name: 'runas_users',
- radio_name: 'ipasudorunasusercategory',
- options: [
- { value: 'all', label: IPA.messages.objects.sudorule.anyone },
- { value: '', label: IPA.messages.objects.sudorule.specified_users }
- ],
- tables: [
- { name: 'ipasudorunas_user' },
- { name: 'ipasudorunas_group' }
- ],
- widgets: [
- {
- type: 'rule_association_table',
- id: entity_name+'-runasruser_user',
- name: 'ipasudorunas_user',
- external: 'ipasudorunasextuser',
- add_method: 'add_runasuser',
- remove_method: 'remove_runasuser',
- add_title: IPA.messages.association.add.ipasudorunas,
- remove_title: IPA.messages.association.remove.ipasudorunas
- },
- {
- type: 'rule_association_table',
- id: entity_name+'-runasuser_group',
- name: 'ipasudorunas_group',
- add_method: 'add_runasuser',
- remove_method: 'remove_runasuser',
- add_title: IPA.messages.association.add.ipasudorunas,
- remove_title: IPA.messages.association.remove.ipasudorunas
- }
- ]
- },
- {
- factory: IPA.rule_details_widget,
- name: 'runas_groups',
- radio_name: 'ipasudorunasgroupcategory',
- options: [
- { value: 'all', label: IPA.messages.objects.sudorule.any_group },
- { value: '', label: IPA.messages.objects.sudorule.specified_groups }
- ],
- tables: [
- { name: 'ipasudorunasgroup_group' }
- ],
- widgets: [{
- type: 'rule_association_table',
- id: entity_name+'-runasgroup_group',
- name: 'ipasudorunasgroup_group',
- external: 'ipasudorunasextgroup',
- add_method: 'add_runasgroup',
- remove_method: 'remove_runasgroup',
- add_title: IPA.messages.association.add.ipasudorunasgroup,
- remove_title: IPA.messages.association.remove.ipasudorunasgroup
- }]
- }
- ]
- }
- );
-
- var that = IPA.details_facet(spec);
-
- var init = function() {
- var options = that.widgets.get_widget('options');
- options.facet = that;
- };
-
- that.update_on_success = function(data, text_status, xhr) {
- that.refresh();
- that.on_update.notify();
- that.nofify_update_success();
- };
-
- that.update_on_error = function(xhr, text_status, error_thrown) {
- that.refresh();
- };
-
- init();
-
- return that;
-};
-
-IPA.sudo.options_section = function(spec) {
-
- spec = spec || {};
-
- var that = IPA.collapsible_section(spec);
-
- function setup_table(){
- that.table = IPA.table_widget({
- name: 'ipasudoopt',
- show_buttons: true
- });
-
- that.widgets.add_widget(that.table);
-
- that.table.create_column({
- name: 'ipasudoopt',
- label: IPA.get_command_option('sudorule_add_option', 'ipasudoopt').label,
- entity: that.entity,
- primary_key: true
- });
-
- that.table.create = function(container) {
-
- that.table.table_create(container);
-
- that.remove_button = IPA.action_button({
- name: 'remove',
- label: IPA.messages.buttons.remove,
- icon: 'remove-icon',
- 'class': 'action-button-disabled',
- click: function() {
- if (!that.remove_button.hasClass('action-button-disabled')) {
- that.remove_handler();
- }
- return false;
- }
- }).appendTo(that.table.buttons);
-
- that.add_button = IPA.action_button({
- name: 'add',
- label: IPA.messages.buttons.add,
- icon: 'add-icon',
- click: function() {
- if (!that.add_button.hasClass('action-button-disabled')) {
- that.add_handler();
- }
- return false;
- }
- }).appendTo(that.table.buttons);
- };
-
- that.table.select_changed = function() {
-
- var values = that.table.get_selected_values();
-
- if (that.remove_button) {
- if (values.length === 0) {
- that.remove_button.addClass('action-button-disabled');
- } else {
- that.remove_button.removeClass('action-button-disabled');
- }
- }
- };
-
- that.table.update = function(values) {
-
- that.table.empty();
-
- for (var i=0; i<values.length; i++) {
- var value = values[i];
- if(!value || value === '') continue;
-
- var record = {
- ipasudoopt: values[i]
- };
- that.table.add_record(record);
- }
-
- that.table.unselect_all();
- };
- }
-
- that.add_handler = function() {
- if (that.facet.is_dirty()) {
- var dialog = IPA.dirty_dialog({
- facet: that.facet
- });
-
- dialog.callback = function() {
- that.show_add_dialog();
- };
- dialog.open(that.container);
-
- } else {
- that.show_add_dialog();
- }
- };
-
- that.remove_handler = function() {
- if (that.facet.is_dirty()) {
- var dialog = IPA.dirty_dialog({
- facet: that.facet
- });
-
- dialog.callback = function() {
- that.show_remove_dialog();
- };
- dialog.open(that.container);
-
- } else {
- that.show_remove_dialog();
- }
- };
-
- that.show_add_dialog = function() {
-
- var label = IPA.get_command_option('sudorule_add_option', 'ipasudoopt').label;
-
- var title = IPA.messages.dialogs.add_title;
- title = title.replace('${entity}', label);
-
- var dialog = IPA.dialog({
- name: 'option-adder-dialog',
- title: title,
- sections: [
- {
- fields: [
- {
- name: 'ipasudoopt',
- label: label
- }
- ]
- }
- ]
- });
-
- dialog.create_button({
- name: 'add',
- label: IPA.messages.buttons.add,
- click: function() {
- var ipasudoopt = dialog.fields.get_field('ipasudoopt');
- var value = ipasudoopt.save()[0];
-
- var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
-
- var command = IPA.command({
- entity: 'sudorule',
- method: 'add_option',
- args: [pkey],
- options: {
- ipasudoopt: value
- },
- on_success: function(data) {
- that.table.load(data.result.result);
- dialog.close();
- IPA.notify_success(IPA.messages.objects.sudorule.option_added);
- },
- on_error: function(data) {
- that.reload();
- dialog.close();
- }
- });
-
- command.execute();
- }
- });
-
- dialog.create_button({
- name: 'cancel',
- label: IPA.messages.buttons.cancel,
- click: function() {
- dialog.close();
- }
- });
-
- dialog.open(that.container);
- };
-
- that.show_remove_dialog = function() {
-
- var label = IPA.get_command_option('sudorule_add_option', 'ipasudoopt').label;
- var values = that.table.get_selected_values();
-
- if (!values.length) {
- var message = IPA.messages.dialogs.remove_empty;
- alert(message);
- return;
- }
-
- var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
-
- var title = IPA.messages.dialogs.remove_title;
- title = title.replace('${entity}', label);
-
- var dialog = IPA.deleter_dialog({
- title: title,
- values: values
- });
-
- dialog.execute = function() {
-
- var batch = IPA.batch_command({
- on_success: function(data) {
- //last successful result of batch results contains valid data
- var result;
- for(var i = data.result.results.length - 1; i > -1; i--) {
- result = data.result.results[i].result;
- if(result) break;
- }
-
- if(result) {
- that.table.load(result);
- } else {
- that.reload();
- }
-
- IPA.notify_success(IPA.messages.objects.sudorule.option_removed);
- },
- on_error: function(data) {
- that.reload();
- }
- });
-
- for (var i=0; i<values.length; i++) {
- var command = IPA.command({
- entity: 'sudorule',
- method: 'remove_option',
- args: [pkey]
- });
-
- command.set_option('ipasudoopt', values[i]);
-
- batch.add_command(command);
- }
-
- batch.execute();
- };
-
- dialog.open(that.container);
- };
-
- that.reload = function() {
- var command = IPA.command({
- entity: that.facet.entity.name,
- method: 'show',
- args: that.facet.get_primary_key(true),
- on_success: function(data) {
- that.table.load(data.result.result);
- }
- });
-
- command.execute();
- };
-
- /*initialization*/
- setup_table();
-
- return that;
-};
-
-IPA.register('sudorule', IPA.sudo.rule_entity);
-IPA.register('sudocmd', IPA.sudo.command_entity);
-IPA.register('sudocmdgroup', IPA.sudo.command_group_entity);