| Module | ActiveLdap::Validations |
| In: |
lib/active_ldap/validations.rb
|
# File lib/active_ldap/validations.rb, line 5
5: def self.append_features(base)
6: super
7:
8: base.class_eval do
9: alias_method :new_record?, :new_entry?
10: include ActiveRecord::Validations
11:
12: validate :validate_required_values
13:
14: class << self
15: def evaluate_condition_with_active_ldap_support(condition, entry)
16: evaluate_condition_without_active_ldap_support(condition, entry)
17: rescue ActiveRecord::ActiveRecordError
18: raise Error, $!.message
19: end
20: alias_method_chain :evaluate_condition, :active_ldap_support
21: end
22:
23: def save_with_active_ldap_support!
24: save_without_active_ldap_support!
25: rescue ActiveRecord::RecordInvalid
26: raise EntryInvalid, $!.message
27: end
28: alias_method_chain :save!, :active_ldap_support
29:
30: def valid?
31: ensure_apply_object_class
32: super
33: end
34:
35: # validate_required_values
36: #
37: # Basic validation:
38: # - Verify that every 'MUST' specified in the schema has a value defined
39: def validate_required_values
40: logger.debug {"stub: validate_required_values called"}
41:
42: # Make sure all MUST attributes have a value
43: @musts.each do |object_class, attributes|
44: attributes.each do |required_attribute|
45: # Normalize to ensure we catch schema problems
46: real_name = to_real_attribute_name(required_attribute, true)
47: raise UnknownAttribute.new(required_attribute) if real_name.nil?
48: # # Set default if it wasn't yet set.
49: # @data[real_name] ||= [] # need?
50: value = @data[real_name] || []
51: # Check for missing requirements.
52: if value.empty?
53: aliases = schema.attribute_aliases(real_name) - [real_name]
54: message = "is required attribute "
55: unless aliases.empty?
56: message << "(aliases: #{aliases.join(', ')}) "
57: end
58: message << "by objectClass '#{object_class}'"
59: errors.add(real_name, message)
60: end
61: end
62: end
63: logger.debug {"stub: validate_required_values finished"}
64: end
65:
66: private
67: def run_validations_with_active_ldap_support(validation_method)
68: run_validations_without_active_ldap_support(validation_method)
69: rescue ActiveRecord::ActiveRecordError
70: raise Error, $!.message
71: end
72: alias_method_chain :run_validations, :active_ldap_support
73: end
74: end
# File lib/active_ldap/validations.rb, line 15
15: def evaluate_condition_with_active_ldap_support(condition, entry)
16: evaluate_condition_without_active_ldap_support(condition, entry)
17: rescue ActiveRecord::ActiveRecordError
18: raise Error, $!.message
19: end
# File lib/active_ldap/validations.rb, line 67
67: def run_validations_with_active_ldap_support(validation_method)
68: run_validations_without_active_ldap_support(validation_method)
69: rescue ActiveRecord::ActiveRecordError
70: raise Error, $!.message
71: end
# File lib/active_ldap/validations.rb, line 23
23: def save_with_active_ldap_support!
24: save_without_active_ldap_support!
25: rescue ActiveRecord::RecordInvalid
26: raise EntryInvalid, $!.message
27: end
# File lib/active_ldap/validations.rb, line 30
30: def valid?
31: ensure_apply_object_class
32: super
33: end
Basic validation:
# File lib/active_ldap/validations.rb, line 39
39: def validate_required_values
40: logger.debug {"stub: validate_required_values called"}
41:
42: # Make sure all MUST attributes have a value
43: @musts.each do |object_class, attributes|
44: attributes.each do |required_attribute|
45: # Normalize to ensure we catch schema problems
46: real_name = to_real_attribute_name(required_attribute, true)
47: raise UnknownAttribute.new(required_attribute) if real_name.nil?
48: # # Set default if it wasn't yet set.
49: # @data[real_name] ||= [] # need?
50: value = @data[real_name] || []
51: # Check for missing requirements.
52: if value.empty?
53: aliases = schema.attribute_aliases(real_name) - [real_name]
54: message = "is required attribute "
55: unless aliases.empty?
56: message << "(aliases: #{aliases.join(', ')}) "
57: end
58: message << "by objectClass '#{object_class}'"
59: errors.add(real_name, message)
60: end
61: end
62: end
63: logger.debug {"stub: validate_required_values finished"}
64: end