dm-ldap-adapter 0.4.0.alpha2 → 0.4.0.alpha3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -1
- data/lib/adapters/ldap_adapter.rb +19 -15
- data/lib/adapters/noop_transaction.rb +27 -8
- data/lib/ldap/array.rb +0 -1
- data/lib/ldap_resource.rb +1 -9
- data/spec/assiociations_ldap_adapter_spec.rb +0 -12
- data/spec/ldap_adapter_spec.rb +1 -0
- data/spec/multi_value_attributes_spec.rb +8 -0
- metadata +4 -4
data/Rakefile
CHANGED
@@ -9,7 +9,7 @@ require 'spec/rake/spectask'
|
|
9
9
|
require 'pathname'
|
10
10
|
|
11
11
|
Hoe.spec('dm-ldap-adapter') do |p|
|
12
|
-
p.version = "0.4.0.
|
12
|
+
p.version = "0.4.0.alpha3"
|
13
13
|
p.description = "ldap adapter for datamapper which uses either net-ldap or ruby-ldap"
|
14
14
|
p.developer('mkristian', 'm.kristian@web.de')
|
15
15
|
p.url = "http://dm-ldap-adapter.rubyforge.org"
|
@@ -132,19 +132,25 @@ module DataMapper
|
|
132
132
|
end
|
133
133
|
ldap_conditions << [:or_operator, or_conditions, nil]
|
134
134
|
else
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
135
|
+
comparator = c.slug
|
136
|
+
case comparator
|
137
|
+
when :raw
|
138
|
+
when :not
|
139
|
+
# TODO proper recursion !!!
|
140
|
+
ldap_conditions << [comparator, c.operands.first.subject.field, c.operands.first.send(:dumped_value)]
|
141
|
+
when :in
|
142
|
+
ldap_conditions << [:eql, c.subject.field, c.send(:dumped_value)]
|
143
|
+
else
|
144
|
+
if c.subject.is_a? Ldap::LdapArray
|
145
|
+
# assume a single value here !!!
|
146
|
+
val = c.send(:dumped_value)
|
147
|
+
ldap_conditions << [comparator, c.subject.field, val[1, val.size - 2]]
|
148
|
+
else
|
149
|
+
ldap_conditions << [comparator, c.subject.field, c.send(:dumped_value)]
|
150
|
+
end
|
151
|
+
end
|
145
152
|
end
|
146
153
|
end
|
147
|
-
end
|
148
154
|
ldap_conditions
|
149
155
|
end
|
150
156
|
|
@@ -238,7 +244,7 @@ module DataMapper
|
|
238
244
|
attributes.each do |property, value|
|
239
245
|
field = property.field.to_sym #TODO sym needed or string ???
|
240
246
|
if property.class == ::Ldap::LdapArray
|
241
|
-
value = property.load(value)
|
247
|
+
value = property.load(value)
|
242
248
|
if resource.original_attributes[property].nil?
|
243
249
|
value.each do |v|
|
244
250
|
actions << [:add, field, v]
|
@@ -260,7 +266,7 @@ value = property.load(value)
|
|
260
266
|
else
|
261
267
|
if resource.model.multivalue_field == property.field.to_sym
|
262
268
|
if value.nil?
|
263
|
-
actions << [:delete, field, resource.
|
269
|
+
actions << [:delete, field, resource.attribute_get(property.name).to_s]
|
264
270
|
else
|
265
271
|
actions << [:add, field, value.to_s]
|
266
272
|
end
|
@@ -288,8 +294,6 @@ value = property.load(value)
|
|
288
294
|
multivalue_prop = resource.send(:properties).detect do |prop|
|
289
295
|
prop.field.to_sym == resource.model.multivalue_field
|
290
296
|
end
|
291
|
-
# set the original value so update does the right thing
|
292
|
-
resource.send("#{multivalue_prop.name}=".to_sym, nil)
|
293
297
|
update_resource(resource,
|
294
298
|
{ multivalue_prop => nil })
|
295
299
|
else
|
@@ -1,16 +1,35 @@
|
|
1
1
|
require "dm-core"
|
2
2
|
|
3
|
+
module Ldap
|
4
|
+
class NoopTransaction
|
5
|
+
|
6
|
+
def close ; end
|
7
|
+
def begin ; end
|
8
|
+
def prepare ; end
|
9
|
+
def commit ; end
|
10
|
+
def rollback ; end
|
11
|
+
def rollback_prepared ; end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
3
16
|
module DataMapper
|
4
17
|
module Adapters
|
5
|
-
class
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
def rollback_prepared ; end
|
18
|
+
class LdapAdapter
|
19
|
+
def transaction_primitive
|
20
|
+
::Ldap::NoopTransaction.new
|
21
|
+
end
|
22
|
+
def push_transaction(transaction)
|
23
|
+
@transaction = transaction
|
24
|
+
end
|
13
25
|
|
26
|
+
def pop_transaction
|
27
|
+
@transaction
|
28
|
+
end
|
29
|
+
|
30
|
+
def current_transaction
|
31
|
+
@transaction
|
32
|
+
end
|
14
33
|
end
|
15
34
|
end
|
16
35
|
end
|
data/lib/ldap/array.rb
CHANGED
data/lib/ldap_resource.rb
CHANGED
@@ -40,15 +40,7 @@ module DataMapper
|
|
40
40
|
|
41
41
|
value = record[property]
|
42
42
|
|
43
|
-
|
44
|
-
# and all values should come back as expected objects
|
45
|
-
if property.respond_to?(:load_with_resource)
|
46
|
-
# hack to allow mutable types which are able to reset
|
47
|
-
# the attribute to make them dirty
|
48
|
-
value = property.load_with_resource(value, resource)
|
49
|
-
else
|
50
|
-
value = property.load(value)
|
51
|
-
end
|
43
|
+
value = property.load(value)
|
52
44
|
|
53
45
|
property.set!(resource, value)
|
54
46
|
end
|
@@ -137,20 +137,8 @@ describe DataMapper::Adapters::LdapAdapter do
|
|
137
137
|
GroupUser.all.size.should == size + 3
|
138
138
|
end
|
139
139
|
DataMapper.repository(:ldap) do
|
140
|
-
puts
|
141
|
-
puts "--------------"
|
142
|
-
p User.get(@user1.id).groups
|
143
|
-
puts "--------------"
|
144
|
-
p User.get(@user2.id).groups
|
145
|
-
puts
|
146
140
|
@user1 = User.get!(@user1.id)
|
147
141
|
@user1.groups.delete(@group1)
|
148
|
-
puts
|
149
|
-
puts "--------------"
|
150
|
-
p User.get(@user1.id).groups
|
151
|
-
puts "--------------"
|
152
|
-
p User.get(@user2.id).groups
|
153
|
-
puts
|
154
142
|
User.get(@user1.id).groups.should == [@group2]
|
155
143
|
User.get(@user2.id).groups.should == [@group1]
|
156
144
|
@user2 = User.get!(@user2.id)
|
data/spec/ldap_adapter_spec.rb
CHANGED
@@ -141,5 +141,13 @@ describe DataMapper.repository(:ldap).adapter.class do
|
|
141
141
|
@contact.mail.should == ['foo', 'bar']
|
142
142
|
end
|
143
143
|
end
|
144
|
+
|
145
|
+
it 'should be able to search properties with LdapArray' do
|
146
|
+
DataMapper.repository(:ldap) do
|
147
|
+
@contact.mail = ["email1"]
|
148
|
+
@contact.save
|
149
|
+
TestContact.all(:mail => "email1").first.should == @contact
|
150
|
+
end
|
151
|
+
end
|
144
152
|
end
|
145
153
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-ldap-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 436503057
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 0.4.0.
|
10
|
+
- alpha3
|
11
|
+
version: 0.4.0.alpha3
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- mkristian
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-10-
|
19
|
+
date: 2010-10-20 00:00:00 +05:30
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|