oa-pubcookie 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-