Builder and registry for validators

https://fedorahosted.org/freeipa/ticket/3235
This commit is contained in:
Petr Vobornik
2013-04-16 15:25:15 +02:00
parent 511452ec41
commit 799bb24931
6 changed files with 43 additions and 20 deletions

View File

@@ -70,7 +70,7 @@ IPA.dns.config_entity = function(spec) {
{
$type: 'multivalued',
name: 'idnsforwarders',
validators: [IPA.dnsforwarder_validator()]
validators: [ 'dnsforwarder']
},
{
$type: 'radio',
@@ -184,26 +184,28 @@ IPA.dns.zone_entity = function(spec) {
$type: 'netaddr',
name: 'idnsallowquery',
validators: [
IPA.network_validator({
{
$type: 'network',
specials: ['any', 'none', 'localhost', 'localnets'],
allow_negation: true,
allow_host_address: true
})]
}]
},
{
$type: 'netaddr',
name: 'idnsallowtransfer',
validators: [
IPA.network_validator({
{
$type: 'network',
specials: ['any', 'none', 'localhost', 'localnets'],
allow_negation: true,
allow_host_address: true
})]
}]
},
{
$type: 'multivalued',
name: 'idnsforwarders',
validators: [IPA.dnsforwarder_validator()]
validators: [ 'dnsforwarder']
},
{
$type: 'radio',
@@ -302,7 +304,7 @@ IPA.dns.zone_entity = function(spec) {
$type: 'dnszone_name',
name: 'name_from_ip',
radio_name: 'dnszone_name_type',
validators: [IPA.network_validator()]
validators: ['network']
}
]
},
@@ -792,7 +794,7 @@ IPA.dns.get_record_metadata = function() {
attributes: [
{
name: 'a_part_ip_address',
validators: [IPA.ip_v4_address_validator()]
validators: ['ip_v4_address']
},
{
$type: 'checkbox',
@@ -811,7 +813,7 @@ IPA.dns.get_record_metadata = function() {
attributes: [
{
name:'aaaa_part_ip_address',
validators: [IPA.ip_v6_address_validator()]
validators: ['ip_v6_address']
},
{
$type: 'checkbox',
@@ -2533,6 +2535,7 @@ IPA.register('dnsrecord', IPA.dns.record_entity);
phases.on('registration', function() {
var w = reg.widget;
var f = reg.field;
var v = reg.validator;
w.register('dnszone_name', IPA.dnszone_name_widget);
w.register('force_dnszone_add_checkbox', IPA.force_dnszone_add_checkbox_widget);
@@ -2545,6 +2548,12 @@ phases.on('registration', function() {
f.register('dnsrecord_type_table', IPA.dns.record_type_table_field);
w.register('netaddr', IPA.multivalued_widget);
f.register('netaddr', IPA.dns.netaddr_field);
v.register('ip_address', IPA.ip_address_validator);
v.register('ip_v4_address', IPA.ip_v4_address_validator);
v.register('ip_v6_address', IPA.ip_v6_address_validator);
v.register('dnsforwarder', IPA.dnsforwarder_validator);
v.register('network', IPA.network_validator);
});
return {};

View File

@@ -75,7 +75,7 @@ IPA.field = function(spec) {
that.undo = spec.undo === undefined ? true : spec.undo;
that.metadata = spec.metadata;
that.validators = spec.validators || [];
that.validators = builder.build('validator', spec.validators) || [];
that.priority = spec.priority;
@@ -914,7 +914,7 @@ exp.post_op = function(obj, spec, context) {
return obj;
};
// New builder and registry
// Field builder and registry
exp.builder = builder.get('field');
exp.builder.factory = IPA.field;
exp.builder.string_mode = 'property';
@@ -923,8 +923,14 @@ reg.set('field', exp.builder.registry);
exp.builder.pre_ops.push(exp.pre_op);
exp.builder.post_ops.push(exp.post_op);
// Validator builder and registry
exp.validator_builder = builder.get('validator');
//exp.validator_builder.factory = IPA.formatter;
reg.set('validator', exp.validator_builder.registry);
exp.register = function() {
var f = reg.field;
var v = reg.validator;
f.register('checkbox', IPA.checkbox_field);
f.register('checkboxes', IPA.checkboxes_field);
@@ -941,6 +947,10 @@ exp.register = function() {
f.register('textarea', IPA.field);
f.register('text', IPA.field);
f.register('value_map', IPA.field);
v.register('metadata', IPA.metadata_validator);
v.register('unsupported', IPA.unsupported_validator);
v.register('same_password', IPA.same_password_validator);
};
phases.on('registration', exp.register);

View File

@@ -230,7 +230,7 @@ IPA.host.entity = function(spec) {
fields: [
{
name: 'ip_address',
validators: [ IPA.ip_address_validator() ],
validators: [ 'ip_address' ],
metadata: IPA.get_command_option('host_add', 'ip_address')
},
{
@@ -803,9 +803,10 @@ IPA.host.set_otp_dialog = function(spec) {
label: '@i18n:password.verify_password',
$type: 'password',
required: true,
validators: [IPA.same_password_validator({
validators: [{
$type: 'same_password',
other_field: 'password1'
})]
}]
}
]
}

View File

@@ -1500,9 +1500,10 @@ IPA.unauthorized_dialog = function(spec) {
$type: 'password',
required: true,
label: text.get('@i18n:password.verify_password', "Verify Password"),
validators: [IPA.same_password_validator({
validators: [{
$type: 'same_password',
other_field: 'new_password'
})]
}]
}
]
}

View File

@@ -121,9 +121,10 @@ IPA.trust.entity = function(spec) {
label: '@i18n:password.verify_password',
widget: 'method.trust_secret_verify',
flags: ['no_command'],
validators: [IPA.same_password_validator({
validators: [{
$type: 'same_password',
other_field: 'trust_secret'
})]
}]
}
],
widgets: [

View File

@@ -509,9 +509,10 @@ IPA.user_password_dialog = function(spec) {
name: 'password2',
label: '@i18n:password.verify_password',
$type: 'password',
validators: [IPA.same_password_validator({
validators: [{
$type: 'same_password',
other_field: 'password1'
})],
}],
required: true
}
]