| Module | ActiveLdap::ObjectClass |
| In: |
lib/active_ldap/object_class.rb
|
# File lib/active_ldap/object_class.rb, line 3 3: def self.included(base) 4: base.extend(ClassMethods) 5: end
# File lib/active_ldap/object_class.rb, line 15
15: def add_class(*target_classes)
16: replace_class(classes + target_classes)
17: end
# File lib/active_ldap/object_class.rb, line 37
37: def classes
38: (get_attribute('objectClass', true) || []).dup
39: end
# File lib/active_ldap/object_class.rb, line 19
19: def ensure_recommended_classes
20: add_class(self.class.recommended_classes)
21: end
# File lib/active_ldap/object_class.rb, line 23
23: def remove_class(*target_classes)
24: replace_class(classes - target_classes)
25: end
# File lib/active_ldap/object_class.rb, line 27
27: def replace_class(*target_classes)
28: new_classes = target_classes.flatten.compact.uniq
29: assert_object_classes(new_classes)
30: if new_classes.sort != classes.sort
31: set_attribute('objectClass', new_classes)
32: clear_object_class_based_cache
33: end
34: end
# File lib/active_ldap/object_class.rb, line 73
73: def assert_have_all_required_classes(new_classes)
74: _schema = schema
75: normalized_new_classes = new_classes.collect(&:downcase)
76: required_classes = self.class.required_classes
77: required_classes = required_classes.reject do |required_class_name|
78: normalized_new_classes.include?(required_class_name.downcase) or
79: (normalized_new_classes.find do |new_class|
80: required_class = _schema.object_class(required_class_name)
81: _schema.object_class(new_class).super_class?(required_class)
82: end)
83: end
84: unless required_classes.empty?
85: format = _("Can't remove required objectClass: %s")
86: required_class_names = required_classes.collect do |required_class|
87: required_class = _schema.object_class(required_class)
88: self.class.human_object_class_name(required_class)
89: end
90: message = format % required_class_names.join(", ")
91: raise RequiredObjectClassMissed, message
92: end
93: end
# File lib/active_ldap/object_class.rb, line 42
42: def assert_object_classes(new_classes)
43: assert_valid_object_class_value_type(new_classes)
44: assert_valid_object_class_value(new_classes)
45: assert_have_all_required_classes(new_classes)
46: end
# File lib/active_ldap/object_class.rb, line 61
61: def assert_valid_object_class_value(new_classes)
62: _schema = schema
63: invalid_classes = new_classes.reject do |new_class|
64: !_schema.object_class(new_class).id.nil?
65: end
66: unless invalid_classes.empty?
67: format = _("unknown objectClass in LDAP server: %s")
68: message = format % invalid_classes.join(', ')
69: raise ObjectClassError, message
70: end
71: end
# File lib/active_ldap/object_class.rb, line 48
48: def assert_valid_object_class_value_type(new_classes)
49: invalid_classes = new_classes.reject do |new_class|
50: new_class.is_a?(String)
51: end
52: unless invalid_classes.empty?
53: format = _("Value in objectClass array is not a String: %s")
54: invalid_classes_info = invalid_classes.collect do |invalid_class|
55: "#{invalid_class.class}: #{invalid_class.inspect}"
56: end.join(", ")
57: raise TypeError, format % invalid_classes_info
58: end
59: end