devise_w3_authenticatable 0.3.1 → 0.3.2
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/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{devise_w3_authenticatable}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Rodrigo Navarro"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-14}
|
13
13
|
s.description = %q{Devise strategy to authenticate against IBM w3 LDAP directory.}
|
14
14
|
s.email = %q{reu@rnavarro.com.br}
|
15
15
|
s.files = [
|
@@ -6,16 +6,18 @@ module Devise
|
|
6
6
|
def authenticate!
|
7
7
|
resource = mapping.to.find_for_w3_authentication(authentication_hash)
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
if validate(resource) { employee = resource.authenticate_with_w3!(password) }
|
12
|
-
resource.after_w3_authentication employee
|
9
|
+
if validate(resource) { bluepages_information = resource.authenticate_with_w3!(password) }
|
10
|
+
resource.after_w3_authentication bluepages_information
|
13
11
|
resource.save if DeviseW3Authenticatable.auto_create_user
|
14
12
|
success! resource
|
15
13
|
else
|
16
14
|
fail :invalid
|
17
15
|
end
|
18
16
|
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
attr_accessor :bluepages_information
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -5,7 +5,7 @@ require 'nokogiri'
|
|
5
5
|
module Devise
|
6
6
|
module W3Adapter
|
7
7
|
def self.valid_credentials?(logon, password)
|
8
|
-
return unless employee =
|
8
|
+
return unless employee = IBMEmployee.find_by_mail(logon)
|
9
9
|
|
10
10
|
user = Net::LDAP.new :host => "bluepages.ibm.com"
|
11
11
|
user.authenticate(employee.uid, password)
|
@@ -13,26 +13,28 @@ module Devise
|
|
13
13
|
user.bind and employee
|
14
14
|
end
|
15
15
|
|
16
|
-
def self.get_information_from_bluepages(logon)
|
17
|
-
IBMEmployee.parse_from_bluepages("http://bluepages.ibm.com/BpHttpApisv3/slaphapi?ibmperson/mail=#{logon}.list/byxml")
|
18
|
-
end
|
19
|
-
|
20
16
|
class IBMEmployee < Struct.new(:uid, :logon, :name, :serial, :department, :country, :workplace)
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
class << self
|
18
|
+
def parse_from_bluepages(bluepages_url)
|
19
|
+
begin
|
20
|
+
entry = Nokogiri::XML(open(bluepages_url)).css("entry").first
|
24
21
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
22
|
+
uid = entry.attributes["dn"].to_s
|
23
|
+
logon = entry.css("attr[name='mail'] value").children.first.to_s
|
24
|
+
name = entry.css("attr[name='cn'] value").children.first.to_s
|
25
|
+
serial = entry.css("attr[name='serialnumber'] value").children.first.to_s
|
26
|
+
department = entry.css("attr[name='dept'] value").children.first.to_s
|
27
|
+
country = entry.css("attr[name='co'] value").children.first.to_s
|
28
|
+
workplace = entry.css("attr[name='physicaldeliveryofficename'] value").children.first.to_s
|
29
|
+
|
30
|
+
new(uid, logon, name, serial, department, country, workplace)
|
31
|
+
rescue
|
32
|
+
nil
|
33
|
+
end
|
34
|
+
end
|
32
35
|
|
33
|
-
|
34
|
-
|
35
|
-
nil
|
36
|
+
def find_by_mail(mail)
|
37
|
+
parse_from_bluepages("http://bluepages.ibm.com/BpHttpApisv3/slaphapi?ibmperson/mail=#{mail}.list/byxml")
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 2
|
9
|
+
version: 0.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Rodrigo Navarro
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-14 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|