devise_active_directory_authenticatable 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
data/ad_auth.sublime.proj CHANGED
@@ -5,7 +5,7 @@
5
5
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/lib/devise_active_directory_authenticatable/model.rb",
6
6
  "settings":
7
7
  {
8
- "buffer_size": 3917,
8
+ "buffer_size": 0,
9
9
  "line_ending": "Unix"
10
10
  }
11
11
  },
@@ -13,7 +13,7 @@
13
13
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/Rakefile",
14
14
  "settings":
15
15
  {
16
- "buffer_size": 1525,
16
+ "buffer_size": 1130,
17
17
  "line_ending": "Unix"
18
18
  }
19
19
  },
@@ -21,7 +21,7 @@
21
21
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/lib/devise_active_directory_authenticatable.rb",
22
22
  "settings":
23
23
  {
24
- "buffer_size": 2719,
24
+ "buffer_size": 1786,
25
25
  "line_ending": "Unix"
26
26
  }
27
27
  },
@@ -29,7 +29,7 @@
29
29
  "file": "/Users/ajrkerr/test3.rb",
30
30
  "settings":
31
31
  {
32
- "buffer_size": 1404,
32
+ "buffer_size": 896,
33
33
  "line_ending": "Unix"
34
34
  }
35
35
  },
@@ -37,7 +37,7 @@
37
37
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/lib/devise_active_directory_authenticatable/strategy.rb",
38
38
  "settings":
39
39
  {
40
- "buffer_size": 1196,
40
+ "buffer_size": 1211,
41
41
  "line_ending": "Unix"
42
42
  }
43
43
  }
@@ -125,15 +125,15 @@
125
125
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/lib/devise_active_directory_authenticatable/model.rb",
126
126
  "settings":
127
127
  {
128
- "buffer_size": 3917,
128
+ "buffer_size": 0,
129
129
  "regions":
130
130
  {
131
131
  },
132
132
  "selection":
133
133
  [
134
134
  [
135
- 883,
136
- 883
135
+ 0,
136
+ 0
137
137
  ]
138
138
  ],
139
139
  "settings":
@@ -153,15 +153,15 @@
153
153
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/Rakefile",
154
154
  "settings":
155
155
  {
156
- "buffer_size": 1525,
156
+ "buffer_size": 1130,
157
157
  "regions":
158
158
  {
159
159
  },
160
160
  "selection":
161
161
  [
162
162
  [
163
- 366,
164
- 366
163
+ 0,
164
+ 0
165
165
  ]
166
166
  ],
167
167
  "settings":
@@ -187,15 +187,15 @@
187
187
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/lib/devise_active_directory_authenticatable.rb",
188
188
  "settings":
189
189
  {
190
- "buffer_size": 2719,
190
+ "buffer_size": 1786,
191
191
  "regions":
192
192
  {
193
193
  },
194
194
  "selection":
195
195
  [
196
196
  [
197
- 705,
198
- 705
197
+ 0,
198
+ 0
199
199
  ]
200
200
  ],
201
201
  "settings":
@@ -215,15 +215,15 @@
215
215
  "file": "/Users/ajrkerr/test3.rb",
216
216
  "settings":
217
217
  {
218
- "buffer_size": 1404,
218
+ "buffer_size": 896,
219
219
  "regions":
220
220
  {
221
221
  },
222
222
  "selection":
223
223
  [
224
224
  [
225
- 754,
226
- 754
225
+ 0,
226
+ 0
227
227
  ]
228
228
  ],
229
229
  "settings":
@@ -243,15 +243,15 @@
243
243
  "file": "/Users/ajrkerr/github/devise_active_directory_authenticatable/lib/devise_active_directory_authenticatable/strategy.rb",
244
244
  "settings":
245
245
  {
246
- "buffer_size": 1196,
246
+ "buffer_size": 1211,
247
247
  "regions":
248
248
  {
249
249
  },
250
250
  "selection":
251
251
  [
252
252
  [
253
- 738,
254
- 738
253
+ 0,
254
+ 0
255
255
  ]
256
256
  ],
257
257
  "settings":
@@ -298,6 +298,7 @@
298
298
  1
299
299
  ]
300
300
  },
301
+ "menu_visible": true,
301
302
  "save_all_on_build": true,
302
303
  "select_file":
303
304
  {
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{devise_active_directory_authenticatable}
8
- s.version = "0.2.0"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Adam Kerr"]
12
- s.date = %q{2011-02-10}
12
+ s.date = %q{2011-02-17}
13
13
  s.description = %q{Active Directory authentication module for Devise, based off of LDAP Authentication}
14
14
  s.email = %q{ajrkerr@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -20,31 +20,43 @@ module Devise
20
20
  }
21
21
  }
22
22
 
23
- #Attribute mapping for user object
24
- mattr_accessor :ad_user_mapping
25
- @@ad_user_mapping = {
26
- :objectGUID => :objectGUID, #Required
27
- :username => :userPrincipalName,
28
- :dn => :dn,
29
- :firstname => :givenName,
30
- :lastname => :sn,
31
- :whenChanged => :whenChanged,
32
- }
23
+ #Attribute mapping for AD to Rails objects
24
+ # :object => { :rails_attr => :ad_attr }
25
+ mattr_accessor :ad_attr_mapping
26
+ @@ad_attr_mapping = {
27
+ #Attribute mapping for user object
28
+ :AdUser => {
29
+ #Attributes are lowercase
30
+ :objectguid => :objectguid, #Required
31
+ :username => :userprincipalname,
32
+ :dn => :dn,
33
+ :firstname => :givenName,
34
+ :lastname => :sn,
35
+ :whenchanged => :whenchanged,
36
+ :whencreated => :whencreated,
37
+ },
33
38
 
34
- #Attribute mapping for group objects
35
- mattr_accessor :ad_group_mapping
36
- @@ad_group_mapping = {
37
- :objectGUID => :objectGUID, #Required
38
- :dn => :dn,
39
- :name => :name,
40
- :description => :description,
41
- :whenCreated => :whenChanged,
39
+ #Attribute mapping for group objects
40
+ :AdGroup => {
41
+ #Attributes are lowercase
42
+ :objectguid => :objectguid, #Required
43
+ :dn => :dn,
44
+ :name => :name,
45
+ :description => :description,
46
+ :whencreated => :whencreated,
47
+ :whenchanged => :whenchanged,
48
+ }
42
49
  }
43
50
 
44
- #Username attribute
51
+ #Username attribute used for logging in
52
+ #Will be automagicaly mapped to authentication_keys.first
45
53
  mattr_accessor :ad_username
46
54
  @@ad_username = :userPrincipalName
47
55
 
56
+ #Map Devise authentication key accordingly
57
+ #Does this work when initializers are set too?
58
+ @@ad_attr_mapping[:AdUser][::Devise.authentication_keys.first] = @@ad_username
59
+
48
60
  #Create the user if they're not found
49
61
  mattr_accessor :ad_create_user
50
62
  @@ad_create_user = true
@@ -1,116 +1,31 @@
1
- require 'devise_active_directory_authenticatable/strategy'
2
1
  require 'devise_active_directory_authenticatable/exception'
2
+ require 'devise_active_directory_authenticatable/models/ad_object'
3
3
 
4
4
  module Devise
5
5
  module Models
6
6
  # Active Directory Module, responsible for validating the user credentials via Active Directory
7
7
  #
8
8
  module AdGroup
9
-
10
- #Remove this before production
11
- ADConnect = DeviseActiveDirectoryAuthenticatable
12
- ADUser = ActiveDirectory::User
13
- Logger = DeviseActiveDirectoryAuthenticatable::Logger
14
-
15
9
  extend ActiveSupport::Concern
16
-
17
- ## Devise key
18
- def login_with
19
- self[::Devise.authentication_keys.first]
20
- end
21
-
22
- # Update the attributes of the current object from the AD
23
- # Defaults to current user if no parameters given
24
- def sync_with_activedirectory(params = {})
25
- params[:objectGUID] = self.objectGUID if params.empty?
26
- user = params[:user] || User.find_in_activedirectory(params)
27
-
28
- return false if user.nil?
29
-
30
- Logger.send "Updating #{params.inspect}"
31
-
32
- #Grab attributes from Devise mapping
33
- ::Devise.ad_attr_mapping.each do |user_attr, active_directory_attr|
34
- self[user_attr] = user.send(active_directory_attr)
35
- end
36
- end
37
-
38
- # Login event handler. Triggered after authentication.
39
- def login
40
- sync_with_activedirectory
41
- super if defined? super
42
- end
43
-
10
+ include AdObject
44
11
 
45
12
  module ClassMethods
46
-
47
- # Authenticate a user based on configured attribute keys. Returns the
48
- # authenticated user if it's valid or nil.
49
- def authenticate_with_activedirectory(attributes={})
50
- @login_with = ::Devise.authentication_keys.first
51
-
52
- username = attributes[@login_with]
53
- password = attributes[:password]
54
-
55
- raise ADConnect::ActiveDirectoryException, "Annonymous binds are not permitted." unless attributes[@login_with].present?
56
-
57
- Logger.send "Attempting to login :#{@login_with} => #{username}"
58
- ad_connect(:username => username, :password => password)
59
- ad_user = find_in_activedirectory(:username => username)
60
- Logger.send "Attempt Result: #{ActiveDirectory::Base.error}"
61
-
62
- raise ADConnect::ActiveDirectoryException, "Could not connect with Active Directory. Check your username, password, and ensure that your account is not locked." unless ad_user
63
-
64
- # Find them in the local database
65
- user = scoped.where(@login_with => attributes[@login_with]).first
66
-
67
- if user.blank? and ::Devise.ad_create_user
68
- Logger.send "Creating new user in database"
69
- user = new
70
- user[@login_with] = attributes[@login_with]
71
- user.sync_with_activedirectory(:user => ad_user)
72
- Logger.send "Created: #{user.inspect}"
73
- end
74
-
75
- Logger.send "Checking: #{ad_user.objectGUID} == #{user.objectGUID}"
76
- # Check to see if we have the same user
77
- if ad_user == user
78
- user.save if user.new_record?
79
- user.login if user.respond_to?(:login)
80
- return user
81
- else
82
- raise ADConnect::ActiveDirectoryException, "Invalid Username or Password. Possible database inconsistency."
83
- end
84
-
13
+ def activedirectory_class
14
+ ActiveDirectory::Group
85
15
  end
86
16
 
87
- #Search based on GUID, DN or Username primarily
88
- def find_in_activedirectory(params = {})
89
-
90
- #Reverse mappings
91
- params[::Devise.ad_username] ||= params[:username] if params[:username].present?
92
- params[::Devise.ad_username] ||= params[@login_with] if params[@login_with].present?
93
-
94
- params.delete(:username)
95
- params.delete(@login_with)
96
-
97
- Logger.send "Searching for #{params.inspect}"
98
- user = ADUser.find(:first, params)
99
- Logger.send "Found: #{user}"
100
-
101
- return user
17
+ def devise_model
18
+ AdGroup
102
19
  end
103
20
 
104
- private
105
-
106
- def ad_connect(params = {})
107
- #Used for username and password
108
- ::Devise.ad_settings[:auth].merge! params
109
-
110
- ActiveDirectory::Base.setup(::Devise.ad_settings)
111
- Logger.send "Connection Result: #{ActiveDirectory::Base.error}"
112
- end
21
+ def sync_all
22
+ #return false unless connected_to_activedirectory?
23
+ find_or_create_from_activedirectory.each do |gp|
24
+ gp.save
25
+ end
26
+ end
113
27
  end
28
+
114
29
  end
115
30
  end
116
31
  end
@@ -1,72 +1,129 @@
1
1
  module Devise
2
- module Models
2
+ #Basic functions and shared methods for AD objects in ActiveRecord
3
+ module AdObject
4
+ extend ActiveSupport::Concern
3
5
 
4
- #Basic functions and shared methods for AD objects in ActiveRecord
5
- module AdObject
6
+ #Constants for easy access
7
+ ADConnect = DeviseActiveDirectoryAuthenticatable
8
+ Logger = DeviseActiveDirectoryAuthenticatable::Logger
6
9
 
7
- ADConnect = DeviseActiveDirectoryAuthenticatable
8
- Logger = DeviseActiveDirectoryAuthenticatable::Logger
10
+ def klass
11
+ self.class
12
+ end
13
+
14
+ # Update the attributes of the current object from the AD
15
+ # Defaults to current user if no parameters given
16
+ def activedirectory_sync!(params = {})
17
+ params[:objectguid] = self.objectguid if params.empty?
18
+ ad_objs = params[:object] || klass.find_in_activedirectory(params)
9
19
 
10
- extend ActiveSupport::Concern
20
+ return false if ad_objs.nil?
21
+ ad_objs = Array(ad_objs) unless ad_objs.is_a? Array
11
22
 
12
- included do
13
- #Serialize all binary fields
14
- # ::Devise.ad_special_fields[:binary].each do |field|
15
- # serialize field
16
- # end
23
+ #Grab attributes from Devise mapping
24
+ ad_objs.each do |ad_obj|
25
+ ::Devise.ad_attr_mapping[klass.devise_model_name.to_sym].each do |local_attr, active_directory_attr|
26
+ self[local_attr] = ad_obj.send(active_directory_attr)
27
+ end
17
28
  end
29
+ end
30
+
31
+ def activedirectory_self
32
+ find_in_activedirectory :objectGUID => objectGUID
33
+ end
18
34
 
19
- ## Devise key
20
- def login_with
21
- self[::Devise.authentication_keys.first]
35
+ module ClassMethods
36
+
37
+ # def devise_model
38
+ # self.ancestors.each do |mod|
39
+ # return mod if mod.include? self.class
40
+ # end
41
+ # end
42
+
43
+ def devise_model_name
44
+ devise_model.name[/.*::(.*)/, 1]
22
45
  end
23
46
 
24
- # Update the attributes of the current object from the AD
25
- # Defaults to current user if no parameters given
26
- def sync_with_activedirectory(params = {})
27
- params[:objectGUID] = self.objectGUID if params.empty?
28
- user = params[:user] || User.find_in_activedirectory(params)
47
+ def activedirectory_class_name
48
+ activedirectory_class.name[/.*::(.*)/, 1]
49
+ end
29
50
 
30
- return false if user.nil?
51
+ #TODO switch from reverse to rassoc to allow for multiple mappings
52
+ def ad_field_to_local field_name
53
+ @ad_to_local_map ||= ::Devise.ad_attr_mapping[devise_model_name.to_sym].invert
54
+ return (@ad_to_local_map.has_key? field_name) ? @ad_to_local_map[field_name] : field_name
55
+ end
31
56
 
32
- Logger.send "Updating #{params.inspect}"
57
+ #TODO switch from reverse to rassoc to allow for multiple mappings
58
+ def local_field_to_ad field_name
59
+ @local_to_ad_map ||= ::Devise.ad_attr_mapping[devise_model_name.to_sym]
60
+ return (@local_to_ad_map.has_key? field_name) ? @local_to_ad_map[field_name] : field_name
61
+ end
33
62
 
34
- #Grab attributes from Devise mapping
35
- ::Devise.ad_attr_mapping.each do |user_attr, active_directory_attr|
36
- self[user_attr] = user.send(active_directory_attr)
63
+ def ad_attrs_to_local ad_attrs
64
+ local_attrs = {}
65
+ ad_attrs.each do |ad_key, value|
66
+ local_key = ad_field_to_local(ad_key)
67
+ local_attrs[local_key] = value
37
68
  end
69
+ local_attrs
38
70
  end
39
71
 
72
+ def local_attrs_to_ad local_attrs
73
+ ad_attrs = {}
74
+ local_attrs.each do |local_key, value|
75
+ ad_key = local_field_to_ad(local_key)
76
+ ad_attrs[ad_key] = value
77
+ end
78
+ ad_attrs
79
+ end
80
+
81
+ #Search based on GUID, DN or Username primarily
82
+ def find_in_activedirectory(local_params = {})
83
+ #Reverse mappings for user
84
+ ad_params = local_attrs_to_ad local_params
85
+
86
+ return find_all_in_activedirectory if ad_params.empty?
40
87
 
41
- module ClassMethods
88
+ ad_objs = activedirectory_class.find(:all, ad_params)
42
89
 
43
- #Search based on GUID, DN or Username primarily
44
- def find_in_activedirectory(params = {})
45
-
46
- #Reverse mappings
47
- params[::Devise.ad_username] ||= params[:username] if params[:username].present?
48
- params[::Devise.ad_username] ||= params[@login_with] if params[@login_with].present?
90
+ return ad_objs
91
+ end
92
+
93
+ def find_or_create_from_activedirectory params = {}
94
+ ad_objs = find_in_activedirectory params
95
+ local_objs = []
49
96
 
50
- params.delete(:username)
51
- params.delete(@login_with)
97
+ ad_objs.each do |ad_obj|
98
+ obj = scoped.where(:objectguid => ad_obj.objectguid).first
99
+ obj = new if obj.blank?
52
100
 
53
- Logger.send "Searching for #{params.inspect}"
54
- user = ADUser.find(:first, params)
55
- Logger.send "Found: #{user}"
101
+ obj.activedirectory_sync! :object => ad_obj
56
102
 
57
- return user
103
+ local_objs << obj
58
104
  end
59
105
 
60
- private
106
+ local_objs
107
+ end
61
108
 
62
- def ad_connect(params = {})
63
- #Used for username and password
64
- ::Devise.ad_settings[:auth].merge! params
109
+ def find_all_in_activedirectory
110
+ activedirectory_class.find(:all)
111
+ end
112
+
113
+ def connected_to_activedirectory?
114
+ ActiveDirectory::Base.connected?
115
+ end
116
+
117
+ # Initializes connection with active directory
118
+ def set_activedirectory_credentials(params = {})
119
+ #Used for username and password
120
+ ::Devise.ad_settings[:auth].merge! params
121
+ end
65
122
 
66
- ActiveDirectory::Base.setup(::Devise.ad_settings)
67
- Logger.send "Connection Result: #{ActiveDirectory::Base.error}"
68
- end
123
+ def activedirectory_connect
124
+ ActiveDirectory::Base.setup(::Devise.ad_settings)
125
+ raise DeviseActiveDirectoryAuthenticatable::ActiveDirectoryException, "Invliad Username or Password" unless ActiveDirectory::Base.connected?
69
126
  end
70
127
  end
71
128
  end
72
- end
129
+ end
@@ -1,49 +1,44 @@
1
1
  require 'devise_active_directory_authenticatable/strategy'
2
2
  require 'devise_active_directory_authenticatable/exception'
3
+ require 'devise_active_directory_authenticatable/models/ad_object'
4
+ require 'devise_active_directory_authenticatable/models/ad_group'
3
5
 
4
6
  module Devise
5
7
  module Models
6
8
  # Active Directory Module, responsible for validating the user credentials via Active Directory
7
9
  #
8
10
  module AdUser
11
+ extend ActiveSupport::Concern
12
+ include AdObject
9
13
 
10
- #Remove this before production
11
- ADConnect = DeviseActiveDirectoryAuthenticatable
12
- ADUser = ActiveDirectory::User
13
14
  Logger = DeviseActiveDirectoryAuthenticatable::Logger
14
15
 
15
- extend ActiveSupport::Concern
16
-
17
16
  ## Devise key
18
17
  def login_with
19
18
  self[::Devise.authentication_keys.first]
20
19
  end
21
20
 
22
- # Update the attributes of the current object from the AD
23
- # Defaults to current user if no parameters given
24
- def sync_with_activedirectory(params = {})
25
- params[:objectGUID] = self.objectGUID if params.empty?
26
- user = params[:user] || User.find_in_activedirectory(params)
27
-
28
- return false if user.nil?
29
-
30
- Logger.send "Updating #{params.inspect}"
31
-
32
- #Grab attributes from Devise mapping
33
- ::Devise.ad_user_mapping.each do |user_attr, active_directory_attr|
34
- Logger.send "Settings #{user_attr} = #{user.send(active_directory_attr)}"
35
- self[user_attr] = user.send(active_directory_attr)
36
- end
37
- end
38
-
39
21
  # Login event handler. Triggered after authentication.
40
22
  def login
41
- sync_with_activedirectory
42
- super if defined? super
23
+ activedirectory_sync!
24
+
25
+ super if defined? super
43
26
  end
44
27
 
28
+ def authenticate_with_activedirectory params = {}
29
+ params[:username] ||= self[login_with]
30
+ set_activedirectory_credentials params
31
+ activedirectory_connect
32
+ end
45
33
 
46
34
  module ClassMethods
35
+ def activedirectory_class
36
+ ActiveDirectory::User
37
+ end
38
+
39
+ def devise_model
40
+ AdUser
41
+ end
47
42
 
48
43
  # Authenticate a user based on configured attribute keys. Returns the
49
44
  # authenticated user if it's valid or nil.
@@ -54,61 +49,27 @@ module Devise
54
49
  password = attributes[:password]
55
50
 
56
51
  Logger.send "Attempting to login :#{@login_with} => #{username}"
57
- ad_connect(:username => username, :password => password)
58
- ad_user = find_in_activedirectory(:username => username)
52
+ set_activedirectory_credentials :username => username, :password => password
53
+ activedirectory_connect
59
54
  Logger.send "Attempt Result: #{ActiveDirectory::Base.error}"
60
55
 
61
- raise ADConnect::ActiveDirectoryException, "Could not connect with Active Directory. Check your username, password, and ensure that your account is not locked." unless ad_user
62
56
 
63
- # Find them in the local database
64
- user = scoped.where(@login_with => attributes[@login_with]).first
57
+ # ad_user = find_in_activedirectory(@login_with => username)
58
+ # return false unless ad_user
65
59
 
66
- if user.blank? and ::Devise.ad_create_user
67
- Logger.send "Creating new user in database"
68
- user = new
69
- user[@login_with] = attributes[@login_with]
70
- user.sync_with_activedirectory(:user => ad_user)
71
- Logger.send "Created: #{user.inspect}"
72
- end
60
+ # Find them in the local database
61
+ user = find_or_create_from_activedirectory(@login_with => attributes[@login_with]).first
73
62
  Logger.send "User: #{user.inspect}"
74
- Logger.send "Checking: #{ad_user.objectGUID.inspect} == #{user.objectGUID.inspect}"
63
+
75
64
  # Check to see if we have the same user
76
- if ad_user == user
77
- user.save if user.new_record?
65
+ unless user.nil?
66
+ user.save if user.new_record? and ::Devise.ad_create_user
78
67
  user.login if user.respond_to?(:login)
79
68
  return user
80
69
  else
81
- raise ADConnect::ActiveDirectoryException, "Invalid Username or Password. Possible database inconsistency."
70
+ raise DeviseActiveDirectoryAuthenticatable::ActiveDirectoryException, "Active Directory user and entry in local database have different GUIDs. Possible database inconsistency."
82
71
  end
83
-
84
72
  end
85
-
86
- #Search based on GUID, DN or Username primarily
87
- def find_in_activedirectory(params = {})
88
-
89
- #Reverse mappings
90
- params[::Devise.ad_username] ||= params[:username] if params[:username].present?
91
- params[::Devise.ad_username] ||= params[@login_with] if params[@login_with].present?
92
-
93
- params.delete(:username)
94
- params.delete(@login_with)
95
-
96
- Logger.send "Searching for #{params.inspect}"
97
- user = ADUser.find(:first, params)
98
- Logger.send "Found: #{user}"
99
-
100
- return user
101
- end
102
-
103
- private
104
-
105
- def ad_connect(params = {})
106
- #Used for username and password
107
- ::Devise.ad_settings[:auth].merge! params
108
-
109
- ActiveDirectory::Base.setup(::Devise.ad_settings)
110
- Logger.send "Connection Result: #{ActiveDirectory::Base.error}"
111
- end
112
73
  end
113
74
  end
114
75
  end
@@ -36,15 +36,25 @@ module DeviseActiveDirectoryAuthenticatable
36
36
  # }
37
37
  # }
38
38
 
39
+
39
40
  ##Attribute mapping for user object
40
- # config.ad_attr_mapping = {
41
- # :objectGUID => :objectGUID, #Required
42
- # :username => :userPrincipalName,
41
+ # config.ad_user_mapping = {
42
+ # :objectguid => :objectguid, #Required
43
+ # :username => :userprincipalname,
43
44
  # :dn => :dn,
44
- # :firstname => :givenName,
45
+ # :firstname => :givenname,
45
46
  # :lastname => :sn
46
47
  # }
47
48
 
49
+ # config.ad_group_mapping = {
50
+ # :objectguid => :objectguid, #Required
51
+ # :dn => :dn,
52
+ # :name => :name,
53
+ # :description => :description,
54
+ # :whencreated => :whencreated,
55
+ # :whenchanged => :whenchanged,
56
+ # }
57
+
48
58
  ##Username attribute
49
59
  ##Maps to :login_with in the devise configuration
50
60
  # config.ad_username = :userPrincipalName
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_active_directory_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Adam Kerr
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-10 00:00:00 -05:00
18
+ date: 2011-02-17 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency