mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Expose ipaRangeType in Web UI
https://fedorahosted.org/freeipa/ticket/3759
This commit is contained in:
parent
381f22af25
commit
69bcfa49d4
@ -85,85 +85,159 @@ return {
|
|||||||
adder_dialog: {
|
adder_dialog: {
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
name: 'cn',
|
name: 'cn'
|
||||||
widget: 'idrange.cn'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ipabaseid',
|
name: 'ipabaseid',
|
||||||
label: '@i18n:objects.idrange.ipabaseid',
|
label: '@i18n:objects.idrange.ipabaseid',
|
||||||
tooltip: '@mo-param:idrange:ipabaseid:label',
|
tooltip: '@mo-param:idrange:ipabaseid:label'
|
||||||
widget: 'idrange.ipabaseid'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ipaidrangesize',
|
name: 'ipaidrangesize',
|
||||||
label: '@i18n:objects.idrange.ipaidrangesize',
|
label: '@i18n:objects.idrange.ipaidrangesize',
|
||||||
tooltip: '@mo-param:idrange:ipaidrangesize:label',
|
tooltip: '@mo-param:idrange:ipaidrangesize:label'
|
||||||
widget: 'idrange.ipaidrangesize'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ipabaserid',
|
name: 'ipabaserid',
|
||||||
label: '@i18n:objects.idrange.ipabaserid',
|
label: '@i18n:objects.idrange.ipabaserid',
|
||||||
tooltip: '@mo-param:idrange:ipabaserid:label',
|
tooltip: '@mo-param:idrange:ipabaserid:label'
|
||||||
widget: 'idrange.ipabaserid'
|
},
|
||||||
|
{
|
||||||
|
name: 'iparangetype',
|
||||||
|
$type: 'radio',
|
||||||
|
label: '@i18n:objects.idrange.type',
|
||||||
|
layout: 'vertical',
|
||||||
|
default_value: 'ipa-local',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
value: 'ipa-local',
|
||||||
|
label: '@i18n:objects.idrange.type_local'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'ipa-ad-trust',
|
||||||
|
label: '@i18n:objects.idrange.type_ad'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'ipa-ad-trust-posix',
|
||||||
|
label: '@i18n:objects.idrange.type_ad_posix'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'ipa-ad-winsync',
|
||||||
|
label: '@i18n:objects.idrange.type_winsync'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'ipa-ipa-trust',
|
||||||
|
label: '@i18n:objects.idrange.type_ipa'
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ipasecondarybaserid',
|
name: 'ipasecondarybaserid',
|
||||||
label: '@i18n:objects.idrange.ipasecondarybaserid',
|
label: '@i18n:objects.idrange.ipasecondarybaserid',
|
||||||
tooltip: '@mo-param:idrange:ipasecondarybaserid:label',
|
tooltip: '@mo-param:idrange:ipasecondarybaserid:label'
|
||||||
widget: 'type.ipasecondarybaserid'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'ipanttrusteddomainsid',
|
name: 'ipanttrusteddomainsid',
|
||||||
label: '@i18n:objects.idrange.ipanttrusteddomainsid',
|
label: '@i18n:objects.idrange.ipanttrusteddomainsid',
|
||||||
tooltip: '@mo-param:idrange:ipanttrusteddomainsid:label',
|
tooltip: '@mo-param:idrange:ipanttrusteddomainsid:label',
|
||||||
widget: 'type.ipanttrusteddomainsid'
|
enabled: false
|
||||||
}
|
|
||||||
],
|
|
||||||
widgets: [
|
|
||||||
{
|
|
||||||
$type: 'details_table_section_nc',
|
|
||||||
name: 'idrange',
|
|
||||||
widgets: [
|
|
||||||
'cn',
|
|
||||||
'ipabaseid',
|
|
||||||
'ipaidrangesize',
|
|
||||||
'ipabaserid'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
$type: 'multiple_choice_section',
|
|
||||||
name: 'type',
|
|
||||||
label: '@i18n:objects.idrange.type',
|
|
||||||
choices: [
|
|
||||||
{
|
|
||||||
name: 'local',
|
|
||||||
label: '@i18n:objects.idrange.type_local',
|
|
||||||
fields: ['ipasecondarybaserid'],
|
|
||||||
required: ['ipasecondarybaserid'],
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ad',
|
|
||||||
label: '@i18n:objects.idrange.type_ad',
|
|
||||||
fields: ['ipanttrusteddomainsid'],
|
|
||||||
required: ['ipanttrusteddomainsid']
|
|
||||||
}
|
|
||||||
],
|
|
||||||
widgets: [
|
|
||||||
'ipasecondarybaserid',
|
|
||||||
'ipanttrusteddomainsid'
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
policies: [
|
policies: [
|
||||||
{
|
IPA.idrange_adder_policy
|
||||||
$factory: IPA.multiple_choice_section_policy,
|
|
||||||
widget: 'type'
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};};
|
};};
|
||||||
|
|
||||||
|
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
|
||||||
|
* ipasecondarybaserid is disabled
|
||||||
|
2) for local ranges
|
||||||
|
* ipanttrusteddomainsid is disabled
|
||||||
|
A) if server has AD trust support:
|
||||||
|
* both ipabaserid and ipasecondarybaserid are required
|
||||||
|
B) if server does not have AD trust support:
|
||||||
|
* ipabaserid and ipasecondarybaserid may only be used together
|
||||||
|
(if one is set, other is required and vice versa)
|
||||||
|
*/
|
||||||
|
|
||||||
|
function require(field) {
|
||||||
|
field.set_enabled(true);
|
||||||
|
field.set_required(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
function disable(field) {
|
||||||
|
field.reset();
|
||||||
|
field.set_required(false);
|
||||||
|
field.set_enabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
function enable(field) {
|
||||||
|
field.set_enabled(true);
|
||||||
|
field.set_required(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
spec = spec || {};
|
||||||
|
|
||||||
|
var that = IPA.facet_policy(spec);
|
||||||
|
|
||||||
|
that.init = function() {
|
||||||
|
var type_f = that.container.fields.get_field('iparangetype');
|
||||||
|
var baserid_f = that.container.fields.get_field('ipabaserid');
|
||||||
|
var secondarybaserid_f = that.container.fields.get_field('ipasecondarybaserid');
|
||||||
|
|
||||||
|
if (IPA.trust_enabled) {
|
||||||
|
require(baserid_f);
|
||||||
|
require(secondarybaserid_f);
|
||||||
|
}
|
||||||
|
|
||||||
|
type_f.widget.value_changed.attach(that.on_input_change);
|
||||||
|
type_f.widget.updated.attach(that.on_input_change);
|
||||||
|
baserid_f.widget.value_changed.attach(that.on_input_change);
|
||||||
|
secondarybaserid_f.widget.value_changed.attach(that.on_input_change);
|
||||||
|
};
|
||||||
|
|
||||||
|
that.on_input_change = function() {
|
||||||
|
var type_f = that.container.fields.get_field('iparangetype');
|
||||||
|
var baserid_f = that.container.fields.get_field('ipabaserid');
|
||||||
|
var secondarybaserid_f = that.container.fields.get_field('ipasecondarybaserid');
|
||||||
|
var trusteddomainsid_f = that.container.fields.get_field('ipanttrusteddomainsid');
|
||||||
|
|
||||||
|
var type_v = type_f.save()[0];
|
||||||
|
var baserid_v = baserid_f.save()[0] || '';
|
||||||
|
var secondarybaserid_v = secondarybaserid_f.save()[0] || '';
|
||||||
|
|
||||||
|
var is_ad_range = (type_v === 'ipa-ad-trust' || type_v === 'ipa-ad-trust-posix');
|
||||||
|
|
||||||
|
if (is_ad_range) {
|
||||||
|
require(baserid_f);
|
||||||
|
require(trusteddomainsid_f);
|
||||||
|
disable(secondarybaserid_f);
|
||||||
|
} else {
|
||||||
|
disable(trusteddomainsid_f);
|
||||||
|
|
||||||
|
if (IPA.trust_enabled) {
|
||||||
|
require(baserid_f);
|
||||||
|
require(secondarybaserid_f);
|
||||||
|
} else {
|
||||||
|
if (baserid_v || secondarybaserid_v) {
|
||||||
|
require(baserid_f);
|
||||||
|
require(secondarybaserid_f);
|
||||||
|
} else {
|
||||||
|
enable(baserid_f);
|
||||||
|
enable(secondarybaserid_f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return that;
|
||||||
|
};
|
||||||
|
|
||||||
exp.entity_spec = make_spec();
|
exp.entity_spec = make_spec();
|
||||||
exp.register = function() {
|
exp.register = function() {
|
||||||
var e = reg.entity;
|
var e = reg.entity;
|
||||||
|
@ -381,7 +381,10 @@
|
|||||||
"ipasecondarybaserid": "Secondary RID base",
|
"ipasecondarybaserid": "Secondary RID base",
|
||||||
"type": "Range type",
|
"type": "Range type",
|
||||||
"type_ad": "Active Directory domain",
|
"type_ad": "Active Directory domain",
|
||||||
"type_local": "Local domain"
|
"type_ad_posix": "Active Directory domain with POSIX attributes",
|
||||||
|
"type_local": "Local domain",
|
||||||
|
"type_ipa": "IPA trust",
|
||||||
|
"type_winsync": "Active Directory winsync"
|
||||||
},
|
},
|
||||||
"realmdomains": {
|
"realmdomains": {
|
||||||
"identity": "Realm Domains",
|
"identity": "Realm Domains",
|
||||||
|
@ -516,7 +516,10 @@ class i18n_messages(Command):
|
|||||||
"ipasecondarybaserid": _("Secondary RID base"),
|
"ipasecondarybaserid": _("Secondary RID base"),
|
||||||
"type": _("Range type"),
|
"type": _("Range type"),
|
||||||
"type_ad": _("Active Directory domain"),
|
"type_ad": _("Active Directory domain"),
|
||||||
|
"type_ad_posix": _("Active Directory domain with POSIX attributes"),
|
||||||
"type_local": _("Local domain"),
|
"type_local": _("Local domain"),
|
||||||
|
"type_ipa": _("IPA trust"),
|
||||||
|
"type_winsync": _("Active Directory winsync"),
|
||||||
},
|
},
|
||||||
"realmdomains": {
|
"realmdomains": {
|
||||||
"identity": _("Realm Domains"),
|
"identity": _("Realm Domains"),
|
||||||
|
Loading…
Reference in New Issue
Block a user