dm-ldap-adapter 0.4.0.alpha2 → 0.4.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|