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: {
|
||||
fields: [
|
||||
{
|
||||
name: 'cn',
|
||||
widget: 'idrange.cn'
|
||||
name: 'cn'
|
||||
},
|
||||
{
|
||||
name: 'ipabaseid',
|
||||
label: '@i18n:objects.idrange.ipabaseid',
|
||||
tooltip: '@mo-param:idrange:ipabaseid:label',
|
||||
widget: 'idrange.ipabaseid'
|
||||
tooltip: '@mo-param:idrange:ipabaseid:label'
|
||||
},
|
||||
{
|
||||
name: 'ipaidrangesize',
|
||||
label: '@i18n:objects.idrange.ipaidrangesize',
|
||||
tooltip: '@mo-param:idrange:ipaidrangesize:label',
|
||||
widget: 'idrange.ipaidrangesize'
|
||||
tooltip: '@mo-param:idrange:ipaidrangesize:label'
|
||||
},
|
||||
{
|
||||
name: 'ipabaserid',
|
||||
label: '@i18n:objects.idrange.ipabaserid',
|
||||
tooltip: '@mo-param:idrange:ipabaserid:label',
|
||||
widget: 'idrange.ipabaserid'
|
||||
tooltip: '@mo-param:idrange:ipabaserid:label'
|
||||
},
|
||||
{
|
||||
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',
|
||||
label: '@i18n:objects.idrange.ipasecondarybaserid',
|
||||
tooltip: '@mo-param:idrange:ipasecondarybaserid:label',
|
||||
widget: 'type.ipasecondarybaserid'
|
||||
tooltip: '@mo-param:idrange:ipasecondarybaserid:label'
|
||||
},
|
||||
{
|
||||
name: 'ipanttrusteddomainsid',
|
||||
label: '@i18n:objects.idrange.ipanttrusteddomainsid',
|
||||
tooltip: '@mo-param:idrange:ipanttrusteddomainsid:label',
|
||||
widget: 'type.ipanttrusteddomainsid'
|
||||
}
|
||||
],
|
||||
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'
|
||||
]
|
||||
enabled: false
|
||||
}
|
||||
],
|
||||
policies: [
|
||||
{
|
||||
$factory: IPA.multiple_choice_section_policy,
|
||||
widget: 'type'
|
||||
}
|
||||
IPA.idrange_adder_policy
|
||||
]
|
||||
}
|
||||
};};
|
||||
|
||||
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.register = function() {
|
||||
var e = reg.entity;
|
||||
|
@ -381,7 +381,10 @@
|
||||
"ipasecondarybaserid": "Secondary RID base",
|
||||
"type": "Range type",
|
||||
"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": {
|
||||
"identity": "Realm Domains",
|
||||
|
@ -516,7 +516,10 @@ class i18n_messages(Command):
|
||||
"ipasecondarybaserid": _("Secondary RID base"),
|
||||
"type": _("Range type"),
|
||||
"type_ad": _("Active Directory domain"),
|
||||
"type_ad_posix": _("Active Directory domain with POSIX attributes"),
|
||||
"type_local": _("Local domain"),
|
||||
"type_ipa": _("IPA trust"),
|
||||
"type_winsync": _("Active Directory winsync"),
|
||||
},
|
||||
"realmdomains": {
|
||||
"identity": _("Realm Domains"),
|
||||
|
Loading…
Reference in New Issue
Block a user