summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2013-02-11 12:56:35 +0100
committerPetr Vobornik <pvoborni@redhat.com>2013-04-10 09:24:46 +0200
commit7e088a83782de9204af0a5bc120b4c97daae2c72 (patch)
tree402b0e1bbcf4874b525b3e9e0d7bd0173d138b00
parentba76a9c431600ba36194242fdfac982306d55192 (diff)
downloadfreeipa.git-7e088a83782de9204af0a5bc120b4c97daae2c72.tar.gz
freeipa.git-7e088a83782de9204af0a5bc120b4c97daae2c72.tar.xz
freeipa.git-7e088a83782de9204af0a5bc120b4c97daae2c72.zip
Global trust config page
https://fedorahosted.org/freeipa/ticket/3333
-rw-r--r--install/ui/src/freeipa/trust.js85
-rw-r--r--install/ui/src/freeipa/webui.js7
-rw-r--r--install/ui/src/freeipa/widget.js6
-rw-r--r--install/ui/test/data/ipa_init.json6
-rw-r--r--install/ui/test/data/ipa_init_objects.json113
-rw-r--r--install/ui/test/data/trustconfigad_show.json41
-rw-r--r--ipalib/plugins/internal.py4
7 files changed, 259 insertions, 3 deletions
diff --git a/install/ui/src/freeipa/trust.js b/install/ui/src/freeipa/trust.js
index e4a227ab..25ddb5cd 100644
--- a/install/ui/src/freeipa/trust.js
+++ b/install/ui/src/freeipa/trust.js
@@ -193,7 +193,92 @@ IPA.trust.adder_dialog = function(spec) {
return that;
};
+IPA.trust.config_entity = function(spec) {
+
+ var that = IPA.entity(spec);
+
+ that.init = function() {
+ that.entity_init();
+
+ that.builder.details_facet({
+ factory: IPA.trust.config_details_facet,
+ trust_type: 'ad',
+ sections: [
+ {
+ name: 'details',
+ label: IPA.messages.objects.trustconfig.options,
+ fields: [
+ 'cn',
+ 'ipantsecurityidentifier',
+ 'ipantflatname',
+ 'ipantdomainguid',
+ {
+ type: 'trust_fallbackgroup_select',
+ name: 'ipantfallbackprimarygroup',
+ other_entity: 'group',
+ other_field: 'cn',
+ empty_option: false,
+ filter_options: {
+ posix: true
+ }
+ }
+ ]
+ }
+ ]
+ });
+ };
+
+ return that;
+};
+
+IPA.trust.config_details_facet = function(spec) {
+
+ spec = spec || {};
+
+ var that = IPA.details_facet(spec);
+
+ that.trust_type = spec.trust_type;
+
+ that.get_refresh_command_name = function() {
+ return that.entity.name+that.trust_type+'_show';
+ };
+
+ that.create_refresh_command = function() {
+
+ var command = that.details_facet_create_refresh_command();
+ command.set_option('trust_type', that.trust_type);
+
+ return command;
+ };
+
+ that.create_update_command = function() {
+
+ var command = that.details_facet_create_update_command();
+ command.set_option('trust_type', that.trust_type);
+
+ return command;
+ };
+
+ return that;
+};
+
+IPA.trust.fallbackgroup_select_widget = function(spec) {
+ var that = IPA.entity_select_widget(spec);
+
+ that.set_options = function(options) {
+ // always add 'Default SMB Group', it can't be obtained by group-find.
+ options.unshift('Default SMB Group');
+ that.entity_select_set_options(options);
+ };
+
+ return that;
+};
+
+IPA.widget_factories['trust_fallbackgroup_select'] = IPA.trust.fallbackgroup_select_widget;
+IPA.field_factories['trust_fallbackgroup_select'] = IPA.field_factories['entity_select'];
+
IPA.register('trust', IPA.trust.entity);
+IPA.register('trustconfig', IPA.trust.config_entity);
return {};
}); \ No newline at end of file
diff --git a/install/ui/src/freeipa/webui.js b/install/ui/src/freeipa/webui.js
index 5315f3ac..db1dab07 100644
--- a/install/ui/src/freeipa/webui.js
+++ b/install/ui/src/freeipa/webui.js
@@ -84,7 +84,12 @@ IPA.admin_navigation = function(spec) {
{entity: 'selfservice'},
{entity: 'delegation'},
{entity: 'idrange'},
- {entity: 'trust'},
+ {
+ name: 'trusts', label: IPA.messages.tabs.trust, children:[
+ {entity: 'trust'},
+ {entity: 'trustconfig'}
+ ]
+ },
{entity: 'config'}
]}];
diff --git a/install/ui/src/freeipa/widget.js b/install/ui/src/freeipa/widget.js
index 44b8611a..17d9b8b7 100644
--- a/install/ui/src/freeipa/widget.js
+++ b/install/ui/src/freeipa/widget.js
@@ -2734,12 +2734,14 @@ IPA.entity_select_widget = function(spec) {
that.other_field = spec.other_field;
that.options = spec.options || [];
+ that.filter_options = spec.filter_options || {};
that.create_search_command = function(filter) {
return IPA.command({
entity: that.other_entity.name,
method: 'find',
- args: [filter]
+ args: [filter],
+ options: that.filter_options
});
};
@@ -2773,6 +2775,8 @@ IPA.entity_select_widget = function(spec) {
if (that.on_search_success) that.on_search_success.call(this, data, text_status, xhr);
};
+ that.entity_select_set_options = that.set_options;
+
return that;
};
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index a75918eb..38ef3ce4 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -488,6 +488,9 @@
"truststatus": "Trust status",
"trusttype": "Trust type"
},
+ "trustconfig": {
+ "options": "Options"
+ },
"user": {
"account": "Account Settings",
"account_status": "Account Status",
@@ -547,7 +550,8 @@
"ipaserver": "IPA Server",
"policy": "Policy",
"role": "Role Based Access Control",
- "sudo": "Sudo"
+ "sudo": "Sudo",
+ "trust": "Trusts"
},
"true": "True",
"widget": {
diff --git a/install/ui/test/data/ipa_init_objects.json b/install/ui/test/data/ipa_init_objects.json
index bf14222d..b06c28f9 100644
--- a/install/ui/test/data/ipa_init_objects.json
+++ b/install/ui/test/data/ipa_init_objects.json
@@ -7328,6 +7328,119 @@
],
"uuid_attribute": ""
},
+ "trustconfig": {
+ "aciattrs": [],
+ "attribute_members": {},
+ "bindable": false,
+ "container_dn": "",
+ "default_attributes": [
+ "cn",
+ "ipantsecurityidentifier",
+ "ipantflatname",
+ "ipantdomainguid",
+ "ipantfallbackprimarygroup"
+ ],
+ "hidden_attributes": [
+ "objectclass",
+ "aci"
+ ],
+ "label": "Global Trust Configuration",
+ "label_singular": "Global Trust Configuration",
+ "methods": [
+ "mod",
+ "show"
+ ],
+ "name": "trustconfig",
+ "object_class": [],
+ "object_class_config": null,
+ "object_name": "trust configuration",
+ "object_name_plural": "entries",
+ "parent_object": "",
+ "rdn_attribute": "",
+ "relationships": {
+ "member": [
+ "Member",
+ "",
+ "no_"
+ ],
+ "memberindirect": [
+ "Indirect Member",
+ null,
+ "no_indirect_"
+ ],
+ "memberof": [
+ "Member Of",
+ "in_",
+ "not_in_"
+ ],
+ "memberofindirect": [
+ "Indirect Member Of",
+ null,
+ "not_in_indirect_"
+ ]
+ },
+ "takes_params": [
+ {
+ "class": "Str",
+ "doc": "Domain",
+ "flags": [
+ "no_update"
+ ],
+ "label": "Domain",
+ "name": "cn",
+ "noextrawhitespace": true,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "class": "Str",
+ "doc": "Security Identifier",
+ "flags": [
+ "no_update"
+ ],
+ "label": "Security Identifier",
+ "name": "ipantsecurityidentifier",
+ "noextrawhitespace": true,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "class": "Str",
+ "doc": "NetBIOS name",
+ "flags": [
+ "no_update"
+ ],
+ "label": "NetBIOS name",
+ "name": "ipantflatname",
+ "noextrawhitespace": true,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "class": "Str",
+ "doc": "Domain GUID",
+ "flags": [
+ "no_update"
+ ],
+ "label": "Domain GUID",
+ "name": "ipantdomainguid",
+ "noextrawhitespace": true,
+ "required": true,
+ "type": "unicode"
+ },
+ {
+ "class": "Str",
+ "doc": "Fallback primary group",
+ "flags": [],
+ "label": "Fallback primary group",
+ "name": "ipantfallbackprimarygroup",
+ "noextrawhitespace": true,
+ "required": true,
+ "type": "unicode"
+ }
+ ],
+ "uuid_attribute": ""
+ },
"user": {
"aciattrs": [
"audio",
diff --git a/install/ui/test/data/trustconfigad_show.json b/install/ui/test/data/trustconfigad_show.json
new file mode 100644
index 00000000..648c8e58
--- /dev/null
+++ b/install/ui/test/data/trustconfigad_show.json
@@ -0,0 +1,41 @@
+{
+ "error": null,
+ "id": null,
+ "result": {
+ "result": {
+ "attributelevelrights": {
+ "aci": "rscwo",
+ "cn": "rscwo",
+ "ipantdomainguid": "rscwo",
+ "ipantfallbackprimarygroup": "rscwo",
+ "ipantflatname": "rscwo",
+ "ipantsecurityidentifier": "rscwo",
+ "nsaccountlock": "rscwo",
+ "objectclass": "rscwo"
+ },
+ "cn": [
+ "test.example.com"
+ ],
+ "dn": "cn=test.example.com,cn=etc,dc=test,dc=example,dc=com",
+ "ipantdomainguid": [
+ "ae391b8e-a104-476f-a7ee-146239a31dde"
+ ],
+ "ipantfallbackprimarygroup": [
+ "Default SMB Group"
+ ],
+ "ipantflatname": [
+ "EXAMPLE"
+ ],
+ "ipantsecurityidentifier": [
+ "S-1-5-21-1849636185-3637193423-921922997"
+ ],
+ "objectclass": [
+ "ipaNTDomainAttrs",
+ "nsContainer",
+ "top"
+ ]
+ },
+ "summary": null,
+ "value": "ad"
+ }
+} \ No newline at end of file
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 4cce2c60..f234f66a 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -627,6 +627,9 @@ class i18n_messages(Command):
"truststatus": _("Trust status"),
"trusttype": _("Trust type"),
},
+ "trustconfig": {
+ "options": _("Options"),
+ },
"user": {
"account": _("Account Settings"),
"account_status": _("Account Status"),
@@ -687,6 +690,7 @@ class i18n_messages(Command):
"policy": _("Policy"),
"role": _("Role Based Access Control"),
"sudo": _("Sudo"),
+ "trust": _("Trusts"),
},
"true": _("True"),
"widget": {