diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2014-09-03 17:23:33 +0200 |
---|---|---|
committer | Tomas Babej <tbabej@redhat.com> | 2014-11-11 10:56:16 +0100 |
commit | 8248f696275e2e63dab860a25467e2868aa17036 (patch) | |
tree | 091cde16f510d44ed7c606db1bb437e9868e4884 /install/ui/src/freeipa | |
parent | 3d11de4849cc2d7b88da6f2522424842dde68889 (diff) | |
download | freeipa-8248f696275e2e63dab860a25467e2868aa17036.tar.gz freeipa-8248f696275e2e63dab860a25467e2868aa17036.tar.xz freeipa-8248f696275e2e63dab860a25467e2868aa17036.zip |
webui: prohibit setting rid base with ipa-trust-ad-posix type
Base RID is no longer editable for ipa-trust-ad-posix range type
Adder dialog:
- Range type selector was moved up because it affects a field above it
Details page:
- Only fields relevant to range's type are visible
https://fedorahosted.org/freeipa/ticket/4221
Reviewed-By: Tomas Babej <tbabej@redhat.com>
Diffstat (limited to 'install/ui/src/freeipa')
-rw-r--r-- | install/ui/src/freeipa/idrange.js | 77 |
1 files changed, 60 insertions, 17 deletions
diff --git a/install/ui/src/freeipa/idrange.js b/install/ui/src/freeipa/idrange.js index 12c0b288b..4e5dbfa00 100644 --- a/install/ui/src/freeipa/idrange.js +++ b/install/ui/src/freeipa/idrange.js @@ -54,6 +54,11 @@ return { 'cn', 'iparangetype', { + name: 'iparangetyperaw', + read_only: true, + visible: false + }, + { name: 'ipabaseid', label: '@i18n:objects.idrange.ipabaseid', title: '@mo-param:idrange:ipabaseid:label' @@ -80,6 +85,9 @@ return { } ] } + ], + policies: [ + exp.idrange_policy ] } ], @@ -89,21 +97,6 @@ return { name: 'cn' }, { - name: 'ipabaseid', - label: '@i18n:objects.idrange.ipabaseid', - title: '@mo-param:idrange:ipabaseid:label' - }, - { - name: 'ipaidrangesize', - label: '@i18n:objects.idrange.ipaidrangesize', - title: '@mo-param:idrange:ipaidrangesize:label' - }, - { - name: 'ipabaserid', - label: '@i18n:objects.idrange.ipabaserid', - title: '@mo-param:idrange:ipabaserid:label' - }, - { name: 'iparangetype', $type: 'radio', label: '@i18n:objects.idrange.type', @@ -125,6 +118,21 @@ return { ] }, { + name: 'ipabaseid', + label: '@i18n:objects.idrange.ipabaseid', + title: '@mo-param:idrange:ipabaseid:label' + }, + { + name: 'ipaidrangesize', + label: '@i18n:objects.idrange.ipaidrangesize', + title: '@mo-param:idrange:ipaidrangesize:label' + }, + { + name: 'ipabaserid', + label: '@i18n:objects.idrange.ipabaserid', + title: '@mo-param:idrange:ipabaserid:label' + }, + { name: 'ipasecondarybaserid', label: '@i18n:objects.idrange.ipasecondarybaserid', title: '@mo-param:idrange:ipasecondarybaserid:label' @@ -147,7 +155,9 @@ IPA.idrange_adder_policy = function(spec) { The logic for enabling/requiring ipabaserid, ipasecondarybaserid and ipanttrusteddomainsid is as follows: 1) for AD ranges (range type is ipa-ad-trust or ipa-ad-trust-posix): - * ipabaserid and ipanttrusteddomainsid are requred + * ipanttrusteddomainsid is required + * ipabaserid is required for ipa-ad-trust but disabled for + ipa-ad-trust-posix * ipasecondarybaserid is disabled 2) for local ranges * ipanttrusteddomainsid is disabled @@ -206,7 +216,11 @@ IPA.idrange_adder_policy = function(spec) { var is_ad_range = (type_v === 'ipa-ad-trust' || type_v === 'ipa-ad-trust-posix'); if (is_ad_range) { - require(baserid_f); + if (type_v === 'ipa-ad-trust') { + require(baserid_f); + } else { + disable(baserid_f); + } require(trusteddomainsid_f); disable(secondarybaserid_f); } else { @@ -230,6 +244,35 @@ IPA.idrange_adder_policy = function(spec) { return that; }; +exp.idrange_policy = function(spec) { + + spec = spec || {}; + var that = IPA.facet_policy(spec); + + that.post_load = function() { + var type_f = that.container.fields.get_field('iparangetyperaw'); + var widgets = that.container.widgets; + var type_v = type_f.get_value()[0]; + + var baserid = true; + var secrid = true; + var sid = true; + + if (type_v === 'ipa-local') { + sid = false; + } else if (type_v === 'ipa-ad-trust-posix') { + baserid = secrid = false; + } else if (type_v === 'ipa-ad-trust') { + secrid = false; + } + + widgets.get_widget('details.ipabaserid').set_visible(baserid); + widgets.get_widget('details.ipasecondarybaserid').set_visible(secrid); + widgets.get_widget('details.ipanttrusteddomainsid').set_visible(sid); + }; + return that; +}; + exp.entity_spec = make_spec(); exp.register = function() { var e = reg.entity; |