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