oa-pubcookie 0.0.2 → 0.1.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.
@@ -1,4 +1,4 @@
1
- require 'omniauth/core'
1
+ require 'omniauth'
2
2
 
3
3
  module OmniAuth
4
4
  module Pubcookie
@@ -9,10 +9,6 @@ module OmniAuth
9
9
  ldap = Net::LDAP.new :host => 'ldap.andrew.cmu.edu', :port => 389
10
10
 
11
11
  filter = Net::LDAP::Filter.eq('cmuAndrewID', username)
12
- attrs = ['givenName', 'sn', 'nickname', 'eduPersonSchoolCollegeName',
13
- 'cmuStudentClass', 'mail', 'cmuPreferredMail',
14
- 'cmuPersonPrincipalName']
15
-
16
12
  ldap.search(:base => 'ou=Person,dc=cmu,dc=edu',
17
13
  :filter => filter, :return_result => true) do |entry|
18
14
  results = {}
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Pubcookie
3
- VERSION = '0.0.2'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
@@ -6,36 +6,51 @@ module OmniAuth
6
6
 
7
7
  include OmniAuth::Pubcookie::CMULdap
8
8
 
9
- def pubcookie_options= options
10
- options[:login_server] ||= 'webiso.andrew.cmu.edu'
11
- options[:granting_cert] ||=
12
- File.expand_path('../cmu_granting.cert', __FILE__)
13
-
14
- super
9
+ option :login_server, 'webiso.andrew.cmu.edu'
10
+ option :granting_cert, File.expand_path('../cmu_granting.cert', __FILE__)
11
+ option :name, 'pubcookie' # otherwise it thinks the provider is cmu
12
+
13
+ info do
14
+ {
15
+ :name => raw_info[:name],
16
+ :email => raw_info[:email],
17
+ :nickname => raw_info[:nickname],
18
+ :first_name => raw_info[:first_name],
19
+ :last_name => raw_info[:last_name],
20
+ :location => raw_info[:location]
21
+ }
15
22
  end
16
23
 
17
- def auth_hash username
18
- andrew_id = username.match(/^(.*)@/)[1]
19
-
20
- attrs = lookup_andrew_id(andrew_id)
21
-
22
- OmniAuth::Utils.deep_merge(super, {
23
- 'uid' => andrew_id,
24
- 'provider' => 'cmu',
25
- 'user_info' => {
26
- 'name' => attrs[:cn],
27
- 'email' => attrs[:mail],
28
- 'nickname' => attrs[:nickname],
29
- 'first_name' => attrs[:givenname],
30
- 'last_name' => attrs[:sn],
31
- 'class' => attrs[:cmustudentclass],
32
- 'department' => attrs[:cmudepartment],
33
- 'location' => attrs[:cmucampus]
34
- },
35
- 'extra' => {'user_hash' => attrs}
36
- })
24
+ extra do
25
+ {
26
+ :department => raw_info[:department],
27
+ :class => raw_info[:class],
28
+ :raw_info => raw_info[:ldap_attrs]
29
+ }
37
30
  end
38
31
 
32
+ def raw_info
33
+ if @raw_info.nil?
34
+ username = extract_username(request)
35
+ andrew_id = username.match(/^(.*)@/)[1]
36
+ attrs = lookup_andrew_id andrew_id
37
+
38
+ @raw_info = {
39
+ :username => andrew_id,
40
+ :name => attrs[:cn],
41
+ :email => attrs[:mail],
42
+ :nickname => attrs[:nickname],
43
+ :first_name => attrs[:givenname],
44
+ :last_name => attrs[:sn],
45
+ :class => attrs[:cmustudentclass],
46
+ :department => attrs[:cmudepartment],
47
+ :location => attrs[:cmucampus],
48
+ :ldap_attrs => attrs
49
+ }
50
+ end
51
+
52
+ @raw_info
53
+ end
39
54
  end
40
55
  end
41
56
  end
@@ -8,21 +8,26 @@ module OmniAuth
8
8
  include OmniAuth::Strategy
9
9
  include Rack::Pubcookie::Auth
10
10
 
11
- def initialize app, options, &block
11
+ option :return_to, '/auth/pubcookie/callback'
12
+
13
+ # Override initialize. Omniauth frowns on this
14
+ # but we need to set pubcookie_options on initialize
15
+ def initialize(app, *args, &block)
16
+ super(app, *args, &block)
12
17
  self.pubcookie_options = options
13
- super app, :pubcookie, &block
14
18
  end
15
19
 
16
20
  def request_phase
21
+ @raw_info = nil
17
22
  Rack::Response.new(login_page_html).finish
18
23
  end
19
24
 
20
25
  def callback_phase
21
- username = extract_username request
22
- request.env['REMOTE_USER'] = username # Part of the pubcookie spec
26
+ # Part of the pubcookie spec
27
+ request.env['REMOTE_USER'] = raw_info[:username]
23
28
 
24
- if username
25
- request.env['omniauth.auth'] = auth_hash(username)
29
+ if raw_info[:username]
30
+ self.env['omniauth.auth'] = auth_hash # provided by Omniauth now
26
31
  request.env['REQUEST_METHOD'] = 'GET'
27
32
 
28
33
  status, headers, body = call_app!
@@ -37,14 +42,16 @@ module OmniAuth
37
42
  end
38
43
  end
39
44
 
40
- def auth_hash username
41
- OmniAuth::Utils.deep_merge(super(), {
42
- 'uid' => username,
43
- 'provider' => 'pubcookie',
44
- 'user_info' => {'name' => username}
45
- })
45
+ # unique user id
46
+ uid { raw_info[:username] }
47
+
48
+ info do
49
+ {'name' => raw_info[:username]}
46
50
  end
47
51
 
52
+ def raw_info
53
+ @raw_info ||= {:username => extract_username(request)}
54
+ end
48
55
  end
49
56
  end
50
57
  end
metadata CHANGED
@@ -1,73 +1,70 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: oa-pubcookie
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Alex Crichton
9
+ - Stafford Brunk
13
10
  autorequire:
14
11
  bindir: bin
15
12
  cert_chain: []
16
-
17
- date: 2011-01-19 00:00:00 -05:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
13
+ date: 2012-01-07 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
21
16
  name: rack-pubcookie
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &70356016614280 !ruby/object:Gem::Requirement
24
18
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 0
31
- - 3
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
32
22
  version: 0.0.3
33
23
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: oa-core
37
24
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *70356016614280
26
+ - !ruby/object:Gem::Dependency
27
+ name: omniauth
28
+ requirement: &70356016613780 !ruby/object:Gem::Requirement
39
29
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
- version: "0"
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
46
34
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: net-ldap
50
35
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *70356016613780
37
+ - !ruby/object:Gem::Dependency
38
+ name: net-ldap
39
+ requirement: &70356016613400 !ruby/object:Gem::Requirement
52
40
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- segments:
57
- - 0
58
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
59
45
  type: :runtime
60
- version_requirements: *id003
61
- description: Omniauth strategy using pubcookie with special additions for CMU students where information is fetched via LDAP
62
- email:
46
+ prerelease: false
47
+ version_requirements: *70356016613400
48
+ - !ruby/object:Gem::Dependency
49
+ name: rack
50
+ requirement: &70356016612860 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.4.0
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *70356016612860
59
+ description: Omniauth strategy using pubcookie with special additions for CMU students
60
+ where information is fetched via LDAP
61
+ email:
63
62
  - alex@crichton.co
63
+ - stafford.brunk@gmail.com
64
64
  executables: []
65
-
66
65
  extensions: []
67
-
68
66
  extra_rdoc_files: []
69
-
70
- files:
67
+ files:
71
68
  - lib/oa-pubcookie.rb
72
69
  - lib/omniauth/pubcookie.rb
73
70
  - lib/omniauth/pubcookie/cmu_ldap.rb
@@ -75,37 +72,28 @@ files:
75
72
  - lib/omniauth/strategies/cmu.rb
76
73
  - lib/omniauth/strategies/cmu_granting.cert
77
74
  - lib/omniauth/strategies/pubcookie.rb
78
- has_rdoc: true
79
75
  homepage: https://github.com/alexcrichton/oa-pubcookie
80
76
  licenses: []
81
-
82
77
  post_install_message:
83
78
  rdoc_options: []
84
-
85
- require_paths:
79
+ require_paths:
86
80
  - lib
87
- required_ruby_version: !ruby/object:Gem::Requirement
81
+ required_ruby_version: !ruby/object:Gem::Requirement
88
82
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- segments:
93
- - 0
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
88
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- segments:
101
- - 0
102
- version: "0"
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
103
93
  requirements: []
104
-
105
94
  rubyforge_project:
106
- rubygems_version: 1.3.7
95
+ rubygems_version: 1.8.11
107
96
  signing_key:
108
97
  specification_version: 3
109
98
  summary: Omniauth strategy using pubcookie
110
99
  test_files: []
111
-