active_directory 1.5.5 → 1.6.0
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.
- checksums.yaml +7 -0
- data/README.md +1 -1
- data/VERSION +1 -1
- data/active_directory.gemspec +11 -10
- data/lib/active_directory.rb +10 -0
- data/lib/active_directory/base.rb +3 -2
- data/lib/active_directory/group.rb +2 -2
- data/lib/active_directory/member.rb +1 -1
- data/lib/active_directory/user.rb +32 -0
- metadata +14 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d449033589eaaa462c257b527459168c87adb334
|
4
|
+
data.tar.gz: e564ced04b9c6db1105f4e053fd66cd211e25101
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9daaae94f3e5a87bdab9b2e35f7a29769303c2b1a22cb7eee81ebe31fab57063e4ee04680009fdd1c93db096c9bc36ee4dd8e98d3e94f6e9ce8e86a4ac49a854
|
7
|
+
data.tar.gz: 25ad84712752a54175df9c6904e38cff0befa84ac612e2b51f2ead76af01ae1364e41adeb9f50a2f26645107c7a502c5c7be2d63b605cdbfeb58e1feb7b2f84a
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ Ruby Integration with Microsoft's Active Directory system based on original code
|
|
5
5
|
See documentation on ActiveDirectory::Base for more information.
|
6
6
|
|
7
7
|
Caching:
|
8
|
-
Queries for membership and group membership are based on the distinguished name of objects. Doing a lot of queries, especially for a Rails app, is a sizable slowdown. To alleviate the problem, I've implemented a very basic cache for queries which search by :distinguishedname. This is
|
8
|
+
Queries for membership and group membership are based on the distinguished name of objects. Doing a lot of queries, especially for a Rails app, is a sizable slowdown. To alleviate the problem, I've implemented a very basic cache for queries which search by :distinguishedname. This is disabled by default. All other queries are unaffected.
|
9
9
|
|
10
10
|
|
11
11
|
A code example is worth a thousand words:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.6.0
|
data/active_directory.gemspec
CHANGED
@@ -2,16 +2,18 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: active_directory 1.6.0 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "1.
|
8
|
+
s.name = "active_directory"
|
9
|
+
s.version = "1.6.0"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Adam T Kerr"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
14
|
+
s.date = "2015-01-29"
|
15
|
+
s.description = "ActiveDirectory uses Net::LDAP to provide a means of accessing and modifying an Active Directory data store. This is a fork of the activedirectory gem."
|
16
|
+
s.email = "ajrkerr@gmail.com"
|
15
17
|
s.extra_rdoc_files = [
|
16
18
|
"README.md"
|
17
19
|
]
|
@@ -36,13 +38,12 @@ Gem::Specification.new do |s|
|
|
36
38
|
"lib/active_directory/member.rb",
|
37
39
|
"lib/active_directory/user.rb"
|
38
40
|
]
|
39
|
-
s.homepage =
|
40
|
-
s.
|
41
|
-
s.
|
42
|
-
s.summary = %q{An interface library for accessing Microsoft's Active Directory.}
|
41
|
+
s.homepage = "http://github.com/ajrkerr/active_directory"
|
42
|
+
s.rubygems_version = "2.4.5"
|
43
|
+
s.summary = "An interface library for accessing Microsoft's Active Directory."
|
43
44
|
|
44
45
|
if s.respond_to? :specification_version then
|
45
|
-
s.specification_version =
|
46
|
+
s.specification_version = 4
|
46
47
|
|
47
48
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
49
|
s.add_runtime_dependency(%q<net-ldap>, [">= 0.1.1"])
|
data/lib/active_directory.rb
CHANGED
@@ -81,5 +81,15 @@ module ActiveDirectory
|
|
81
81
|
:memberof => :GroupDnArray,
|
82
82
|
:member => :MemberDnArray,
|
83
83
|
},
|
84
|
+
|
85
|
+
#Computer objects
|
86
|
+
:Computer => {
|
87
|
+
:objectguid => :Binary,
|
88
|
+
:whencreated => :Date,
|
89
|
+
:whenchanged => :Date,
|
90
|
+
:objectsid => :Binary,
|
91
|
+
:memberof => :GroupDnArray,
|
92
|
+
:member => :MemberDnArray,
|
93
|
+
},
|
84
94
|
}
|
85
95
|
end
|
@@ -422,7 +422,8 @@ module ActiveDirectory
|
|
422
422
|
begin
|
423
423
|
attributes.merge!(required_attributes)
|
424
424
|
if @@ldap.add(:dn => dn.to_s, :attributes => attributes)
|
425
|
-
|
425
|
+
ldap_obj= @@ldap.search(:base => dn.to_s)
|
426
|
+
return new(ldap_obj[0])
|
426
427
|
else
|
427
428
|
return nil
|
428
429
|
end
|
@@ -555,7 +556,7 @@ module ActiveDirectory
|
|
555
556
|
end
|
556
557
|
|
557
558
|
def set_attr(name, value)
|
558
|
-
@attributes[name.to_sym] = encode_field(name, value)
|
559
|
+
@attributes[name.to_sym] = self.class.encode_field(name, value)
|
559
560
|
end
|
560
561
|
|
561
562
|
##
|
@@ -98,7 +98,7 @@ module ActiveDirectory
|
|
98
98
|
# belong to this Group, or any of its subgroups, are returned.
|
99
99
|
#
|
100
100
|
def member_users(recursive = false)
|
101
|
-
@member_users = User.find(:all, :distinguishedname => @entry
|
101
|
+
@member_users = User.find(:all, :distinguishedname => @entry[:member]).delete_if { |u| u.nil? }
|
102
102
|
if recursive then
|
103
103
|
self.member_groups.each do |group|
|
104
104
|
@member_users.concat(group.member_users(true))
|
@@ -117,7 +117,7 @@ module ActiveDirectory
|
|
117
117
|
# belong to this Group, or any of its subgroups, are returned.
|
118
118
|
#
|
119
119
|
def member_groups(recursive = false)
|
120
|
-
@member_groups ||= Group.find(:all, :distinguishedname => @entry
|
120
|
+
@member_groups ||= Group.find(:all, :distinguishedname => @entry[:member]).delete_if { |g| g.nil? }
|
121
121
|
if recursive then
|
122
122
|
self.member_groups.each do |group|
|
123
123
|
@member_groups.concat(group.member_groups(true))
|
@@ -28,7 +28,7 @@ module ActiveDirectory
|
|
28
28
|
group_dns = memberOf
|
29
29
|
return false if group_dns.nil? || group_dns.empty?
|
30
30
|
#group_dns = [group_dns] unless group_dns.is_a?(Array)
|
31
|
-
group_dns.include?(usergroup.dn)
|
31
|
+
group_dns.map{ |g| g.dn }.include?(usergroup.dn)
|
32
32
|
end
|
33
33
|
|
34
34
|
#
|
@@ -24,6 +24,7 @@ module ActiveDirectory
|
|
24
24
|
|
25
25
|
UAC_ACCOUNT_DISABLED = 0x0002
|
26
26
|
UAC_NORMAL_ACCOUNT = 0x0200 # 512
|
27
|
+
UAC_PASSWORD_NEVER_EXPIRES = 0x10000 #65536
|
27
28
|
|
28
29
|
def self.filter # :nodoc:
|
29
30
|
Net::LDAP::Filter.eq(:objectClass,'user') & ~Net::LDAP::Filter.eq(:objectClass,'computer')
|
@@ -104,6 +105,37 @@ module ActiveDirectory
|
|
104
105
|
userAccountControl.to_i & UAC_ACCOUNT_DISABLED != 0
|
105
106
|
end
|
106
107
|
|
108
|
+
#
|
109
|
+
# Disables the account
|
110
|
+
#
|
111
|
+
def disable
|
112
|
+
new_mask = userAccountControl.to_i | UAC_ACCOUNT_DISABLED
|
113
|
+
update_attributes userAccountControl: new_mask.to_s
|
114
|
+
end
|
115
|
+
|
116
|
+
#
|
117
|
+
# Enables the account
|
118
|
+
#
|
119
|
+
def enable
|
120
|
+
new_mask = userAccountControl.to_i ^ UAC_ACCOUNT_DISABLED
|
121
|
+
update_attributes userAccountControl: new_mask.to_s
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
#
|
126
|
+
# Returns true if this account is expired.
|
127
|
+
#
|
128
|
+
def expired?
|
129
|
+
!lockoutTime.nil? && lockoutTime.to_i != 0
|
130
|
+
end
|
131
|
+
|
132
|
+
#
|
133
|
+
# Returns true if this account has a password that does not expire.
|
134
|
+
#
|
135
|
+
def password_never_expires?
|
136
|
+
userAccountControl.to_i & UAC_PASSWORD_NEVER_EXPIRES != 0
|
137
|
+
end
|
138
|
+
|
107
139
|
#
|
108
140
|
# Returns true if the user should be able to log in with a correct
|
109
141
|
# password (essentially, their account is not disabled or locked
|
metadata
CHANGED
@@ -1,27 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_directory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Adam T Kerr
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-01-29 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: net-ldap
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.1.1
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.1
|
25
27
|
description: ActiveDirectory uses Net::LDAP to provide a means of accessing and modifying
|
26
28
|
an Active Directory data store. This is a fork of the activedirectory gem.
|
27
29
|
email: ajrkerr@gmail.com
|
@@ -51,26 +53,25 @@ files:
|
|
51
53
|
- lib/active_directory/user.rb
|
52
54
|
homepage: http://github.com/ajrkerr/active_directory
|
53
55
|
licenses: []
|
56
|
+
metadata: {}
|
54
57
|
post_install_message:
|
55
58
|
rdoc_options: []
|
56
59
|
require_paths:
|
57
60
|
- lib
|
58
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
-
none: false
|
60
62
|
requirements:
|
61
|
-
- -
|
63
|
+
- - ">="
|
62
64
|
- !ruby/object:Gem::Version
|
63
65
|
version: '0'
|
64
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
67
|
requirements:
|
67
|
-
- -
|
68
|
+
- - ">="
|
68
69
|
- !ruby/object:Gem::Version
|
69
70
|
version: '0'
|
70
71
|
requirements: []
|
71
72
|
rubyforge_project:
|
72
|
-
rubygems_version:
|
73
|
+
rubygems_version: 2.4.5
|
73
74
|
signing_key:
|
74
|
-
specification_version:
|
75
|
+
specification_version: 4
|
75
76
|
summary: An interface library for accessing Microsoft's Active Directory.
|
76
77
|
test_files: []
|