devise_cas_authenticatable 1.3.2 → 1.3.3

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5448fb286452b15ccbd920790c2e460da848493d
4
+ data.tar.gz: c3d8cd05c1ea43e6339dad9f7533b4122bdf4381
5
+ SHA512:
6
+ metadata.gz: ef08c90a7c12c002bbab20ce4513a89f6350ed21b9564164ded03c73444250e11830d8678b6e589dd0f00d196181f0d985e1592a90af7f65d955f8266f7205b8
7
+ data.tar.gz: c059b6cc5aa59cd8cea3f3eb3a0930c28877355ad154b9efe44f341346d712fb1e4d1987bbf803eb240ea91aeac04daa79c5a0664a5b5519085c786d5e89ff25
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog for devise\_cas\_authenticatable
2
2
 
3
+ ## Version 1.3.3 - December 13, 2013
4
+
5
+ * Bug fix for single sign out when using Rack >= 1.5 (thanks to @activars)
6
+
3
7
  ## Version 1.3.2 - August 16, 2013
4
8
 
5
9
  * Rails 4 deprecation warning fix (thanks to @reidmix)
data/README.md CHANGED
@@ -77,6 +77,10 @@ to tell your app how to talk to your CAS server:
77
77
  # config.cas_destination_url = 'https://cas.myorganization.com'
78
78
  # config.cas_follow_url = 'https://cas.myorganization.com'
79
79
  # config.cas_logout_url_param = nil
80
+
81
+ # You can specify the name of the destination argument with the following option.
82
+ # e.g. the following option will change it from 'destination' to 'url'
83
+ # config.cas_destination_logout_param_name = 'url'
80
84
 
81
85
  # By default, devise_cas_authenticatable will create users. If you would rather
82
86
  # require user records to already exist locally before they can authenticate via
@@ -39,7 +39,8 @@ class Devise::CasSessionsController < Devise::SessionsController
39
39
  logger.debug "Intercepted single-sign-out request for CAS session #{session_index}."
40
40
  session_id = ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.find_session_id_by_index(session_index)
41
41
  if session_id
42
- destroy_cas_session(session_id, session_index)
42
+ logger.debug "Found Session ID #{session_id} with index key #{session_index}"
43
+ destroy_cas_session(session_index, session_id)
43
44
  end
44
45
  else
45
46
  logger.warn "Ignoring CAS single-sign-out request as no session index could be parsed from the parameters."
@@ -64,12 +65,10 @@ class Devise::CasSessionsController < Devise::SessionsController
64
65
  end
65
66
  end
66
67
 
67
- def destroy_cas_session(session_id, session_index)
68
- logger.debug "Destroying cas session #{session_id} for ticket #{session_index}"
68
+ def destroy_cas_session(session_index, session_id)
69
69
  if destroy_session_by_id(session_id)
70
70
  logger.debug "Destroyed session #{session_id} corresponding to service ticket #{session_index}."
71
71
  end
72
-
73
72
  ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.delete_session_index(session_index)
74
73
  end
75
74
 
@@ -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.3.2"
5
+ s.version = "1.3.3"
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"]
@@ -1,8 +1,8 @@
1
1
  module DeviseCasAuthenticatable
2
2
  module SingleSignOut
3
3
 
4
- def self.rails3?
5
- defined?(::Rails) && ::Rails::VERSION::MAJOR == 3
4
+ def self.rails3_or_greater?
5
+ defined?(::Rails) && ::Rails::VERSION::MAJOR >= 3
6
6
  end
7
7
 
8
8
  # Supports destroying sessions by ID for ActiveRecord and Redis session stores
@@ -10,8 +10,8 @@ module DeviseCasAuthenticatable
10
10
  def session_store_class
11
11
  @session_store_class ||=
12
12
  begin
13
- if ::DeviseCasAuthenticatable::SingleSignOut.rails3?
14
- # => Rails 3
13
+ # Rails 3 & 4 session store
14
+ if ::DeviseCasAuthenticatable::SingleSignOut.rails3_or_greater?
15
15
  Rails.configuration.session_store
16
16
  ::Rails.application.config.session_store
17
17
  else
@@ -2,6 +2,9 @@ module DeviseCasAuthenticatable
2
2
  module SingleSignOut
3
3
 
4
4
  class StoreSessionId
5
+ CAS_TICKET_STORE = 'cas_last_valid_ticket_store'
6
+ CAS_LAST_TICKET = 'cas_last_valid_ticket'
7
+
5
8
  def initialize(app)
6
9
  @app = app
7
10
  end
@@ -12,19 +15,25 @@ module DeviseCasAuthenticatable
12
15
  end
13
16
 
14
17
  private
15
-
16
18
  def store_session_id_for_cas_ticket(env)
17
19
  request = Rack::Request.new(env)
18
20
  session = request.session
19
21
 
20
- if session['cas_last_valid_ticket_store']
21
- sid = env['rack.session.options'][:id]
22
- Rails.logger.info "Storing sid #{sid} for ticket #{session['cas_last_valid_ticket']}"
23
- ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.store_session_id_for_index(session['cas_last_valid_ticket'], sid)
24
- session['cas_last_valid_ticket_store'] = false
22
+ if session.respond_to?(:id)
23
+ # Rack > 1.5
24
+ session_id = session.id
25
+ else
26
+ # Compatible with old Rack requests
27
+ session_id = env['rack.session.options'][:id]
25
28
  end
26
- end
29
+ cas_ticket_store = session[CAS_TICKET_STORE]
27
30
 
31
+ if cas_ticket_store
32
+ Rails.logger.info "Storing Session ID #{session_id} for ticket #{session[CAS_LAST_TICKET]}"
33
+ ::DeviseCasAuthenticatable::SingleSignOut::Strategies.current_strategy.store_session_id_for_index(session[CAS_LAST_TICKET], session_id)
34
+ session[CAS_TICKET_STORE] = false
35
+ end
36
+ end
28
37
  end
29
38
  end
30
39
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_cas_authenticatable
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 1.3.2
4
+ version: 1.3.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nat Budin
@@ -10,216 +9,190 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-08-16 00:00:00.000000000 Z
12
+ date: 2013-12-13 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- prerelease: false
17
15
  name: devise
18
- type: :runtime
19
- version_requirements: !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
20
17
  requirements:
21
- - - ! '>='
18
+ - - '>='
22
19
  - !ruby/object:Gem::Version
23
20
  version: 1.2.0
24
- none: false
25
- requirement: !ruby/object:Gem::Requirement
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
26
24
  requirements:
27
- - - ! '>='
25
+ - - '>='
28
26
  - !ruby/object:Gem::Version
29
27
  version: 1.2.0
30
- none: false
31
28
  - !ruby/object:Gem::Dependency
32
- prerelease: false
33
29
  name: rubycas-client
34
- type: :runtime
35
- version_requirements: !ruby/object:Gem::Requirement
30
+ requirement: !ruby/object:Gem::Requirement
36
31
  requirements:
37
- - - ! '>='
32
+ - - '>='
38
33
  - !ruby/object:Gem::Version
39
34
  version: 2.2.1
40
- none: false
41
- requirement: !ruby/object:Gem::Requirement
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
42
38
  requirements:
43
- - - ! '>='
39
+ - - '>='
44
40
  - !ruby/object:Gem::Version
45
41
  version: 2.2.1
46
- none: false
47
42
  - !ruby/object:Gem::Dependency
48
- prerelease: false
49
43
  name: rails
50
- type: :development
51
- version_requirements: !ruby/object:Gem::Requirement
44
+ requirement: !ruby/object:Gem::Requirement
52
45
  requirements:
53
- - - ! '>='
46
+ - - '>='
54
47
  - !ruby/object:Gem::Version
55
48
  version: 3.0.7
56
- none: false
57
- requirement: !ruby/object:Gem::Requirement
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
58
52
  requirements:
59
- - - ! '>='
53
+ - - '>='
60
54
  - !ruby/object:Gem::Version
61
55
  version: 3.0.7
62
- none: false
63
56
  - !ruby/object:Gem::Dependency
64
- prerelease: false
65
57
  name: rspec-rails
66
- type: :development
67
- version_requirements: !ruby/object:Gem::Requirement
58
+ requirement: !ruby/object:Gem::Requirement
68
59
  requirements:
69
- - - ! '>='
60
+ - - '>='
70
61
  - !ruby/object:Gem::Version
71
62
  version: '0'
72
- none: false
73
- requirement: !ruby/object:Gem::Requirement
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
74
66
  requirements:
75
- - - ! '>='
67
+ - - '>='
76
68
  - !ruby/object:Gem::Version
77
69
  version: '0'
78
- none: false
79
70
  - !ruby/object:Gem::Dependency
80
- prerelease: false
81
71
  name: mocha
82
- type: :development
83
- version_requirements: !ruby/object:Gem::Requirement
72
+ requirement: !ruby/object:Gem::Requirement
84
73
  requirements:
85
- - - ! '>='
74
+ - - '>='
86
75
  - !ruby/object:Gem::Version
87
76
  version: '0'
88
- none: false
89
- requirement: !ruby/object:Gem::Requirement
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
90
80
  requirements:
91
- - - ! '>='
81
+ - - '>='
92
82
  - !ruby/object:Gem::Version
93
83
  version: '0'
94
- none: false
95
84
  - !ruby/object:Gem::Dependency
96
- prerelease: false
97
85
  name: shoulda
98
- type: :development
99
- version_requirements: !ruby/object:Gem::Requirement
86
+ requirement: !ruby/object:Gem::Requirement
100
87
  requirements:
101
88
  - - ~>
102
89
  - !ruby/object:Gem::Version
103
90
  version: 3.4.0
104
- none: false
105
- requirement: !ruby/object:Gem::Requirement
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
106
94
  requirements:
107
95
  - - ~>
108
96
  - !ruby/object:Gem::Version
109
97
  version: 3.4.0
110
- none: false
111
98
  - !ruby/object:Gem::Dependency
112
- prerelease: false
113
99
  name: sqlite3-ruby
114
- type: :development
115
- version_requirements: !ruby/object:Gem::Requirement
100
+ requirement: !ruby/object:Gem::Requirement
116
101
  requirements:
117
- - - ! '>='
102
+ - - '>='
118
103
  - !ruby/object:Gem::Version
119
104
  version: '0'
120
- none: false
121
- requirement: !ruby/object:Gem::Requirement
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
122
108
  requirements:
123
- - - ! '>='
109
+ - - '>='
124
110
  - !ruby/object:Gem::Version
125
111
  version: '0'
126
- none: false
127
112
  - !ruby/object:Gem::Dependency
128
- prerelease: false
129
113
  name: sham_rack
130
- type: :development
131
- version_requirements: !ruby/object:Gem::Requirement
114
+ requirement: !ruby/object:Gem::Requirement
132
115
  requirements:
133
- - - ! '>='
116
+ - - '>='
134
117
  - !ruby/object:Gem::Version
135
118
  version: '0'
136
- none: false
137
- requirement: !ruby/object:Gem::Requirement
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
138
122
  requirements:
139
- - - ! '>='
123
+ - - '>='
140
124
  - !ruby/object:Gem::Version
141
125
  version: '0'
142
- none: false
143
126
  - !ruby/object:Gem::Dependency
144
- prerelease: false
145
127
  name: capybara
146
- type: :development
147
- version_requirements: !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
148
129
  requirements:
149
130
  - - ~>
150
131
  - !ruby/object:Gem::Version
151
132
  version: 1.1.4
152
- none: false
153
- requirement: !ruby/object:Gem::Requirement
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
154
136
  requirements:
155
137
  - - ~>
156
138
  - !ruby/object:Gem::Version
157
139
  version: 1.1.4
158
- none: false
159
140
  - !ruby/object:Gem::Dependency
160
- prerelease: false
161
141
  name: crypt-isaac
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
162
147
  type: :development
148
+ prerelease: false
163
149
  version_requirements: !ruby/object:Gem::Requirement
164
150
  requirements:
165
- - - ! '>='
151
+ - - '>='
166
152
  - !ruby/object:Gem::Version
167
153
  version: '0'
168
- none: false
154
+ - !ruby/object:Gem::Dependency
155
+ name: launchy
169
156
  requirement: !ruby/object:Gem::Requirement
170
157
  requirements:
171
- - - ! '>='
158
+ - - '>='
172
159
  - !ruby/object:Gem::Version
173
160
  version: '0'
174
- none: false
175
- - !ruby/object:Gem::Dependency
176
- prerelease: false
177
- name: launchy
178
161
  type: :development
162
+ prerelease: false
179
163
  version_requirements: !ruby/object:Gem::Requirement
180
164
  requirements:
181
- - - ! '>='
165
+ - - '>='
182
166
  - !ruby/object:Gem::Version
183
167
  version: '0'
184
- none: false
168
+ - !ruby/object:Gem::Dependency
169
+ name: timecop
185
170
  requirement: !ruby/object:Gem::Requirement
186
171
  requirements:
187
- - - ! '>='
172
+ - - '>='
188
173
  - !ruby/object:Gem::Version
189
174
  version: '0'
190
- none: false
191
- - !ruby/object:Gem::Dependency
192
- prerelease: false
193
- name: timecop
194
175
  type: :development
176
+ prerelease: false
195
177
  version_requirements: !ruby/object:Gem::Requirement
196
178
  requirements:
197
- - - ! '>='
179
+ - - '>='
198
180
  - !ruby/object:Gem::Version
199
181
  version: '0'
200
- none: false
182
+ - !ruby/object:Gem::Dependency
183
+ name: pry
201
184
  requirement: !ruby/object:Gem::Requirement
202
185
  requirements:
203
- - - ! '>='
186
+ - - '>='
204
187
  - !ruby/object:Gem::Version
205
188
  version: '0'
206
- none: false
207
- - !ruby/object:Gem::Dependency
208
- prerelease: false
209
- name: pry
210
189
  type: :development
190
+ prerelease: false
211
191
  version_requirements: !ruby/object:Gem::Requirement
212
192
  requirements:
213
- - - ! '>='
214
- - !ruby/object:Gem::Version
215
- version: '0'
216
- none: false
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - ! '>='
193
+ - - '>='
220
194
  - !ruby/object:Gem::Version
221
195
  version: '0'
222
- none: false
223
196
  description: CAS authentication module for Devise
224
197
  email: natbudin@gmail.com
225
198
  executables: []
@@ -300,30 +273,26 @@ files:
300
273
  homepage: http://github.com/nbudin/devise_cas_authenticatable
301
274
  licenses:
302
275
  - MIT
276
+ metadata: {}
303
277
  post_install_message:
304
278
  rdoc_options: []
305
279
  require_paths:
306
280
  - lib
307
281
  required_ruby_version: !ruby/object:Gem::Requirement
308
282
  requirements:
309
- - - ! '>='
283
+ - - '>='
310
284
  - !ruby/object:Gem::Version
311
- segments:
312
- - 0
313
- hash: -1549464804654339845
314
285
  version: '0'
315
- none: false
316
286
  required_rubygems_version: !ruby/object:Gem::Requirement
317
287
  requirements:
318
- - - ! '>'
288
+ - - '>'
319
289
  - !ruby/object:Gem::Version
320
290
  version: 1.3.1
321
- none: false
322
291
  requirements: []
323
292
  rubyforge_project:
324
- rubygems_version: 1.8.23
293
+ rubygems_version: 2.1.11
325
294
  signing_key:
326
- specification_version: 3
295
+ specification_version: 4
327
296
  summary: CAS authentication module for Devise
328
297
  test_files:
329
298
  - spec/config_spec.rb