Class: Ldumbd::TableMap
- Inherits:
-
Object
- Object
- Ldumbd::TableMap
- Defined in:
- lib/ldumbd/table_map.rb
Constant Summary collapse
- TABLE_MAP =
{ group: { object_classes: ['posixGroup'], attributes: { 'gidNumber' => :groups__id, 'cn' => :groups__name, 'memberUid' => :users }, }, user: { object_classes: ['posixAccount'], attributes: { 'uidNumber' => :users__id, 'uid' => :users__name, 'cn' => :users__realname, 'loginShell' => :users__shell, 'homeDirectory' => :users__homedir, 'gidNumber' => :users__group_id } } }
- INVERSE_TABLE_MAP =
invert_table_map(TABLE_MAP)
Class Method Summary collapse
- .db_key(model, ldap_key) ⇒ Object
- .ldap_keys(model) ⇒ Object
- .object_classes(model) ⇒ Object
-
.sequel_to_ldap_object(sequel_object) ⇒ Object
TODO: move this into User/Group model class.
Class Method Details
.db_key(model, ldap_key) ⇒ Object
44 45 46 47 |
# File 'lib/ldumbd/table_map.rb', line 44 def self.db_key(model, ldap_key) table = model_to_sym(model) TABLE_MAP[table][:attributes][ldap_key] end |
.ldap_keys(model) ⇒ Object
59 60 61 62 |
# File 'lib/ldumbd/table_map.rb', line 59 def self.ldap_keys(model) table = model_to_sym(model) INVERSE_TABLE_MAP[table] end |
.object_classes(model) ⇒ Object
49 50 51 52 |
# File 'lib/ldumbd/table_map.rb', line 49 def self.object_classes(model) table = model_to_sym(model) TABLE_MAP[table][:object_classes] end |
.sequel_to_ldap_object(sequel_object) ⇒ Object
TODO: move this into User/Group model class
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/ldumbd/table_map.rb', line 65 def self.sequel_to_ldap_object(sequel_object) # return unmodified object if it is not a Sequel model instance return sequel_object unless sequel_object.is_a?(Sequel::Model) model = sequel_object.class ldap_keys = ldap_keys(model) ldap_array = sequel_object.values.map do |sequel_key, value| # LDAP::Server expects all values to be Arrays [ldap_keys[sequel_key], [value]] end ldap_object = Hash[ldap_array] ldap_object['objectClass'] = object_classes(model) if sequel_object.is_a?(Group) ldap_object['dn_prefix'] = "cn=#{sequel_object.name},ou=Groups" if sequel_object.users.any? ldap_object['memberUid'] = sequel_object.users.map { |u| u.name } end elsif sequel_object.is_a?(User) ldap_object['dn_prefix'] = "uid=#{sequel_object.name},ou=People" end ldap_object end |