devise_cas_authenticatable 1.0.1 → 1.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.
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # Changelog for devise\_cas\_authenticatable
2
+
3
+ ## Version 1.1.0 - March 5, 2012
4
+
5
+ * Add configurable destination and follow URL support (thanks [Dyson Simmons](https://github.com/dyson)!)
6
+ * Allow applications deployed at sub-URIs to work (thanks [Tod Detre](https://github.com/tod)!)
7
+ * Only add trailing slash to base URI if it's not already present (thanks [joe81](https://github.com/joe81)!)
8
+ * Some documentation updates.
data/Gemfile.lock CHANGED
@@ -14,7 +14,7 @@ GIT
14
14
  PATH
15
15
  remote: .
16
16
  specs:
17
- devise_cas_authenticatable (1.0.1)
17
+ devise_cas_authenticatable (1.1.0)
18
18
  devise (>= 1.0.6)
19
19
  rubycas-client (>= 2.2.1)
20
20
 
@@ -64,10 +64,11 @@ GEM
64
64
  ffi (~> 1.0.6)
65
65
  coderay (0.9.8)
66
66
  crypt-isaac (0.9.1)
67
- devise (1.5.3)
67
+ devise (2.0.4)
68
68
  bcrypt-ruby (~> 3.0)
69
69
  orm_adapter (~> 0.0.3)
70
- warden (~> 1.1)
70
+ railties (~> 3.1)
71
+ warden (~> 1.1.1)
71
72
  diff-lcs (1.1.3)
72
73
  erubis (2.7.0)
73
74
  ffi (1.0.11)
@@ -89,7 +90,7 @@ GEM
89
90
  metaclass (~> 0.0.1)
90
91
  multi_json (1.0.4)
91
92
  nokogiri (1.5.0)
92
- orm_adapter (0.0.5)
93
+ orm_adapter (0.0.6)
93
94
  polyglot (0.3.3)
94
95
  pry (0.9.7.3)
95
96
  coderay (~> 0.9.8)
@@ -140,7 +141,7 @@ GEM
140
141
  rspec (~> 2.7.0)
141
142
  ruby_parser (2.3.1)
142
143
  sexp_processor (~> 3.0)
143
- rubycas-client (2.3.9)
144
+ rubycas-client (2.3.8)
144
145
  activesupport
145
146
  rubyzip (0.9.4)
146
147
  selenium-webdriver (2.13.0)
@@ -170,7 +171,7 @@ GEM
170
171
  polyglot
171
172
  polyglot (>= 0.3.1)
172
173
  tzinfo (0.3.31)
173
- warden (1.1.0)
174
+ warden (1.1.1)
174
175
  rack (>= 1.0)
175
176
  xpath (0.1.4)
176
177
  nokogiri (~> 1.3)
data/README.md CHANGED
@@ -13,7 +13,7 @@ using [rubycas-server](http://github.com/gunark/rubycas-server)).
13
13
  Requirements
14
14
  ------------
15
15
 
16
- - Rails 2.3 or 3.0
16
+ - Rails 2.3 or greater (works with 3.x versions as well)
17
17
  - Devise 1.0 or greater
18
18
  - rubycas-client
19
19
 
@@ -27,17 +27,11 @@ and in your config/environment.rb (on Rails 2.3):
27
27
  config.gem 'devise', :version => '~> 1.0.6'
28
28
  config.gem 'devise_cas_authenticatable'
29
29
 
30
- or Gemfile (Rails 3.0):
30
+ or Gemfile (Rails 3.x):
31
31
 
32
32
  gem 'devise'
33
33
  gem 'devise_cas_authenticatable'
34
34
 
35
- Example
36
- -------
37
-
38
- I've modified the devise_example application to work with this gem. You can find the results
39
- [here](http://github.com/nbudin/devise_cas_example).
40
-
41
35
  Setup
42
36
  -----
43
37
 
@@ -70,6 +64,15 @@ to tell your app how to talk to your CAS server:
70
64
  # config.cas_logout_url = "https://cas.myorganization.com/logout"
71
65
  # config.cas_validate_url = "https://cas.myorganization.com/serviceValidate"
72
66
 
67
+ # The CAS specification allows for the passing of a follow URL to be displayed when
68
+ # a user logs out on the CAS server. RubyCAS-Server also supports redirecting to a
69
+ # URL via the destination param. Set either of these urls and specify either nil,
70
+ # 'destination' or 'follow' as the logout_url_param. If the urls are blank but
71
+ # logout_url_param is set, a default will be detected for the service.
72
+ # config.cas_destination_url = 'https://cas.myorganization.com'
73
+ # config.cas_follow_url = 'https://cas.myorganization.com'
74
+ # config.cas_logout_url_param = nil
75
+
73
76
  # By default, devise_cas_authenticatable will create users. If you would rather
74
77
  # require user records to already exist locally before they can authenticate via
75
78
  # CAS, uncomment the following line.
@@ -16,11 +16,14 @@ class Devise::CasSessionsController < Devise::SessionsController
16
16
  end
17
17
 
18
18
  def destroy
19
+ follow_url = nil
20
+ destination_url = nil
21
+
19
22
  # Delete the ticket->session ID mapping if one exists for this session
20
23
  if ticket = session['cas_last_valid_ticket']
21
24
  ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.delete_session_index(ticket)
22
25
  end
23
-
26
+
24
27
  # if :cas_create_user is false a CAS session might be open but not signed_in
25
28
  # in such case we destroy the session here
26
29
  if signed_in?(resource_name)
@@ -29,7 +32,29 @@ class Devise::CasSessionsController < Devise::SessionsController
29
32
  reset_session
30
33
  end
31
34
 
32
- redirect_to(logout_url)
35
+ if ::Devise.cas_logout_url_param == 'destination'
36
+ if !::Devise.cas_destination_url.blank?
37
+ destination_url = Devise.cas_destination_url
38
+ else
39
+ destination_url = request.protocol
40
+ destination_url << request.host
41
+ destination_url << ":#{request.port.to_s}" unless request.port == 80
42
+ destination_url << after_sign_out_path_for(resource_name)
43
+ end
44
+ end
45
+
46
+ if ::Devise.cas_logout_url_param == 'follow'
47
+ if !::Devise.cas_follow_url.blank?
48
+ follow_url = Devise.cas_follow_url
49
+ else
50
+ follow_url = request.protocol
51
+ follow_url << request.host
52
+ follow_url << ":#{request.port.to_s}" unless request.port == 80
53
+ follow_url << after_sign_out_path_for(resource_name)
54
+ end
55
+ end
56
+
57
+ redirect_to(::Devise.cas_client.logout_url(destination_url, follow_url))
33
58
  end
34
59
 
35
60
  def single_sign_out
@@ -90,45 +115,4 @@ class Devise::CasSessionsController < Devise::SessionsController
90
115
  ::Devise.cas_client.add_service_to_login_url(::Devise.cas_service_url(request.url, devise_mapping))
91
116
  end
92
117
  helper_method :cas_login_url
93
-
94
- def request_url
95
- return @request_url if @request_url
96
- @request_url = request.protocol.dup
97
- @request_url << request.host
98
- @request_url << ":#{request.port.to_s}" unless request.port == 80
99
- @request_url
100
- end
101
-
102
- def destination_url
103
- return unless ::Devise.cas_logout_url_param == 'destination'
104
- if !::Devise.cas_destination_url.blank?
105
- url = Devise.cas_destination_url
106
- else
107
- url = request_url.dup
108
- url << after_sign_out_path_for(resource_name)
109
- end
110
- end
111
-
112
- def follow_url
113
- return unless ::Devise.cas_logout_url_param == 'follow'
114
- if !::Devise.cas_follow_url.blank?
115
- url = Devise.cas_follow_url
116
- else
117
- url = request_url.dup
118
- url << after_sign_out_path_for(resource_name)
119
- end
120
- end
121
-
122
- def service_url
123
- ::Devise.cas_service_url(request_url.dup, devise_mapping)
124
- end
125
-
126
- def logout_url
127
- begin
128
- ::Devise.cas_client.logout_url(destination_url, follow_url, service_url)
129
- rescue ArgumentError
130
- # Older rubycas-clients don't accept a service_url
131
- ::Devise.cas_client.logout_url(destination_url, follow_url)
132
- end
133
- end
134
118
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{devise_cas_authenticatable}
5
- s.version = "1.0.1"
5
+ s.version = "1.1.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Nat Budin", "Jeremy Haile"]
@@ -41,7 +41,7 @@ module Devise
41
41
 
42
42
  # The login URL of the CAS server. If undefined, will default based on cas_base_url.
43
43
  @@cas_validate_url = nil
44
-
44
+
45
45
  # The destination url for logout.
46
46
  @@cas_destination_url = nil
47
47
 
@@ -70,7 +70,7 @@ module Devise
70
70
 
71
71
  # Name of the parameter passed in the logout query
72
72
  @@cas_destination_logout_param_name = nil
73
-
73
+
74
74
  mattr_accessor :cas_base_url, :cas_login_url, :cas_logout_url, :cas_validate_url, :cas_destination_url, :cas_follow_url, :cas_logout_url_param, :cas_create_user, :cas_destination_logout_param_name, :cas_username_column, :cas_enable_single_sign_out, :cas_single_sign_out_mapping_strategy
75
75
 
76
76
  def self.cas_create_user?
@@ -102,11 +102,19 @@ module Devise
102
102
  u = URI.parse(base_url)
103
103
  u.query = nil
104
104
  u.path = if mapping.respond_to?(:fullpath)
105
- mapping.fullpath
105
+ if ENV['RAILS_RELATIVE_URL_ROOT']
106
+ ENV['RAILS_RELATIVE_URL_ROOT'] + mapping.fullpath
107
+ else
108
+ mapping.fullpath
109
+ end
106
110
  else
107
- mapping.raw_path
111
+ if ENV['RAILS_RELATIVE_URL_ROOT']
112
+ ENV['RAILS_RELATIVE_URL_ROOT'] + mapping.raw_path
113
+ else
114
+ mapping.raw_path
115
+ end
108
116
  end
109
- u.path << "/"
117
+ u.path << "/" unless u.path =~ /\/$/
110
118
  u.path << action
111
119
  u.to_s
112
120
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_cas_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Nat Budin
@@ -9,176 +10,140 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-07-06 00:00:00.000000000 Z
13
+ date: 2012-03-05 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: devise
16
- requirement: !ruby/object:Gem::Requirement
17
+ requirement: &70212720533560 !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - ">="
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: 1.0.6
21
23
  type: :runtime
22
24
  prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: 1.0.6
25
+ version_requirements: *70212720533560
28
26
  - !ruby/object:Gem::Dependency
29
27
  name: rubycas-client
30
- requirement: !ruby/object:Gem::Requirement
28
+ requirement: &70212720532860 !ruby/object:Gem::Requirement
29
+ none: false
31
30
  requirements:
32
- - - ">="
31
+ - - ! '>='
33
32
  - !ruby/object:Gem::Version
34
33
  version: 2.2.1
35
34
  type: :runtime
36
35
  prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: 2.2.1
36
+ version_requirements: *70212720532860
42
37
  - !ruby/object:Gem::Dependency
43
38
  name: rails
44
- requirement: !ruby/object:Gem::Requirement
39
+ requirement: &70212720532160 !ruby/object:Gem::Requirement
40
+ none: false
45
41
  requirements:
46
- - - ">="
42
+ - - ! '>='
47
43
  - !ruby/object:Gem::Version
48
44
  version: 3.0.7
49
45
  type: :development
50
46
  prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 3.0.7
47
+ version_requirements: *70212720532160
56
48
  - !ruby/object:Gem::Dependency
57
49
  name: rspec-rails
58
- requirement: !ruby/object:Gem::Requirement
50
+ requirement: &70212720542700 !ruby/object:Gem::Requirement
51
+ none: false
59
52
  requirements:
60
- - - ">="
53
+ - - ! '>='
61
54
  - !ruby/object:Gem::Version
62
55
  version: 2.6.1
63
56
  type: :development
64
57
  prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 2.6.1
58
+ version_requirements: *70212720542700
70
59
  - !ruby/object:Gem::Dependency
71
60
  name: mocha
72
- requirement: !ruby/object:Gem::Requirement
61
+ requirement: &70212720562620 !ruby/object:Gem::Requirement
62
+ none: false
73
63
  requirements:
74
- - - ">="
64
+ - - ! '>='
75
65
  - !ruby/object:Gem::Version
76
66
  version: '0'
77
67
  type: :development
78
68
  prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
69
+ version_requirements: *70212720562620
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: shoulda
86
- requirement: !ruby/object:Gem::Requirement
72
+ requirement: &70212720561540 !ruby/object:Gem::Requirement
73
+ none: false
87
74
  requirements:
88
- - - ">="
75
+ - - ! '>='
89
76
  - !ruby/object:Gem::Version
90
77
  version: '0'
91
78
  type: :development
92
79
  prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
80
+ version_requirements: *70212720561540
98
81
  - !ruby/object:Gem::Dependency
99
82
  name: sqlite3-ruby
100
- requirement: !ruby/object:Gem::Requirement
83
+ requirement: &70212720560820 !ruby/object:Gem::Requirement
84
+ none: false
101
85
  requirements:
102
- - - ">="
86
+ - - ! '>='
103
87
  - !ruby/object:Gem::Version
104
88
  version: '0'
105
89
  type: :development
106
90
  prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
91
+ version_requirements: *70212720560820
112
92
  - !ruby/object:Gem::Dependency
113
93
  name: sham_rack
114
- requirement: !ruby/object:Gem::Requirement
94
+ requirement: &70212720559860 !ruby/object:Gem::Requirement
95
+ none: false
115
96
  requirements:
116
- - - ">="
97
+ - - ! '>='
117
98
  - !ruby/object:Gem::Version
118
99
  version: '0'
119
100
  type: :development
120
101
  prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
102
+ version_requirements: *70212720559860
126
103
  - !ruby/object:Gem::Dependency
127
104
  name: capybara
128
- requirement: !ruby/object:Gem::Requirement
105
+ requirement: &70212720559040 !ruby/object:Gem::Requirement
106
+ none: false
129
107
  requirements:
130
- - - ">="
108
+ - - ! '>='
131
109
  - !ruby/object:Gem::Version
132
110
  version: '0'
133
111
  type: :development
134
112
  prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
113
+ version_requirements: *70212720559040
140
114
  - !ruby/object:Gem::Dependency
141
115
  name: crypt-isaac
142
- requirement: !ruby/object:Gem::Requirement
116
+ requirement: &70212720557960 !ruby/object:Gem::Requirement
117
+ none: false
143
118
  requirements:
144
- - - ">="
119
+ - - ! '>='
145
120
  - !ruby/object:Gem::Version
146
121
  version: '0'
147
122
  type: :development
148
123
  prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
124
+ version_requirements: *70212720557960
154
125
  - !ruby/object:Gem::Dependency
155
126
  name: launchy
156
- requirement: !ruby/object:Gem::Requirement
127
+ requirement: &70212720557100 !ruby/object:Gem::Requirement
128
+ none: false
157
129
  requirements:
158
- - - ">="
130
+ - - ! '>='
159
131
  - !ruby/object:Gem::Version
160
132
  version: '0'
161
133
  type: :development
162
134
  prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
135
+ version_requirements: *70212720557100
168
136
  - !ruby/object:Gem::Dependency
169
137
  name: pry
170
- requirement: !ruby/object:Gem::Requirement
138
+ requirement: &70212720576340 !ruby/object:Gem::Requirement
139
+ none: false
171
140
  requirements:
172
- - - ">="
141
+ - - ! '>='
173
142
  - !ruby/object:Gem::Version
174
143
  version: '0'
175
144
  type: :development
176
145
  prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
146
+ version_requirements: *70212720576340
182
147
  description: CAS authentication module for Devise
183
148
  email: natbudin@gmail.com
184
149
  executables: []
@@ -186,9 +151,10 @@ extensions: []
186
151
  extra_rdoc_files:
187
152
  - README.md
188
153
  files:
189
- - ".gitignore"
190
- - ".project"
191
- - ".travis.yml"
154
+ - .gitignore
155
+ - .project
156
+ - .travis.yml
157
+ - CHANGELOG.md
192
158
  - Gemfile
193
159
  - Gemfile.lock
194
160
  - README.md
@@ -244,26 +210,30 @@ files:
244
210
  - spec/support/migrations.rb
245
211
  homepage: http://github.com/nbudin/devise_cas_authenticatable
246
212
  licenses: []
247
- metadata: {}
248
213
  post_install_message:
249
214
  rdoc_options: []
250
215
  require_paths:
251
216
  - lib
252
217
  required_ruby_version: !ruby/object:Gem::Requirement
218
+ none: false
253
219
  requirements:
254
- - - ">="
220
+ - - ! '>='
255
221
  - !ruby/object:Gem::Version
256
222
  version: '0'
223
+ segments:
224
+ - 0
225
+ hash: -4204177157087710120
257
226
  required_rubygems_version: !ruby/object:Gem::Requirement
227
+ none: false
258
228
  requirements:
259
- - - ">"
229
+ - - ! '>'
260
230
  - !ruby/object:Gem::Version
261
231
  version: 1.3.1
262
232
  requirements: []
263
233
  rubyforge_project:
264
- rubygems_version: 2.2.0
234
+ rubygems_version: 1.8.11
265
235
  signing_key:
266
- specification_version: 4
236
+ specification_version: 3
267
237
  summary: CAS authentication module for Devise
268
238
  test_files:
269
239
  - spec/routes_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 4802438427502187764340e8d56cf908ee07ab47
4
- data.tar.gz: 102f8c610d852576aeabcf993ccdcf5cfe1afe78
5
- SHA512:
6
- metadata.gz: 0c9e3d4c11c0db81b7a89ac49c31a0bcf817e64e0c2d4a0c23af07374ff15c23d6bd21f43883fb85dee7899afdb9535b23881e12ef751b24b63667ee90c358e6
7
- data.tar.gz: c5a8f955b0a8560a7ee7792307c91d412648e344112e569cab0927abc52782ca6d2b3400800fba1f16ee8e554e8d03815453b1205ec962f8e17448bbf9be754d