derfred-rubycas-client 2.0.9992 → 2.0.9993

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.
@@ -39,6 +39,20 @@ module CASClient
39
39
  @@log = client.log
40
40
  end
41
41
 
42
+ # this guesses the service_url which is requesting the login
43
+ def self.read_service_url(controller)
44
+ if config[:service_url]
45
+ log.debug("Using explicitly set service url: #{config[:service_url]}")
46
+ return config[:service_url]
47
+ end
48
+
49
+ params = controller.params.dup
50
+ params.delete(:ticket)
51
+ service_url = controller.url_for(params)
52
+ log.debug("Guessed service url: #{service_url.inspect}")
53
+ return service_url
54
+ end
55
+
42
56
  # Returns the login URL for the current controller.
43
57
  # Useful when you want to provide a "Login" link in a GatewayFilter'ed
44
58
  # action.
@@ -17,10 +17,9 @@ module CASClient
17
17
  def handle_request
18
18
  return :single_sign_out if single_sign_out?(@controller)
19
19
 
20
- st, require_validation = determine_request_context(@controller)
21
-
20
+ st = determine_request_context(@controller)
22
21
  if st
23
- handle_ticket(@controller, st, require_validation)
22
+ handle_ticket(@controller, st)
24
23
  else
25
24
  handle_no_ticket(@controller)
26
25
  end
@@ -40,12 +39,12 @@ module CASClient
40
39
 
41
40
  private
42
41
  # high level request handlers
43
- def handle_ticket(controller, st, require_validation)
44
- st = client.validate_service_ticket(st) if require_validation and not st.has_been_validated?
42
+ def handle_ticket(controller, st)
43
+ st = client.validate_service_ticket(st) unless st.has_been_validated?
45
44
  vr = st.response
46
45
 
47
- if !require_validation or st.is_valid?
48
- setup_new_session(controller, st, vr) if require_validation
46
+ if st.is_valid?
47
+ setup_new_session(controller, st, vr)
49
48
 
50
49
  # Store the ticket in the session to avoid re-validating the same service
51
50
  # ticket with the CAS server.
@@ -204,8 +203,6 @@ module CASClient
204
203
  last_st = controller.session[:cas_last_valid_ticket]
205
204
  st = read_ticket(controller)
206
205
 
207
- require_validation = true
208
-
209
206
  if st && last_st &&
210
207
  last_st.ticket == st.ticket &&
211
208
  last_st.service == st.service
@@ -214,7 +211,6 @@ module CASClient
214
211
  # the same ticket happens to be in the URL.
215
212
  log.warn("Re-using previously validated ticket since the ticket id and service are the same.")
216
213
  st = last_st
217
- require_validation = false
218
214
  elsif last_st &&
219
215
  !config[:authenticate_on_every_request] &&
220
216
  controller.session[client.username_session_key]
@@ -226,15 +222,13 @@ module CASClient
226
222
  log.debug "Existing local CAS session detected for #{controller.session[client.username_session_key].inspect}. "+
227
223
  "Previous ticket #{last_st.ticket.inspect} will be re-used."
228
224
  st = last_st
229
- require_validation = false
230
225
  elsif last_st &&
231
226
  config[:authenticate_on_every_request] &&
232
227
  controller.session[client.username_session_key]
233
228
  st = last_st
234
- require_validation = true
235
229
  end
236
230
 
237
- [st, require_validation]
231
+ st
238
232
  end
239
233
 
240
234
  def read_ticket(controller)
@@ -268,7 +262,7 @@ module CASClient
268
262
  log.info("Ticket #{st.ticket.inspect} for service #{st.service.inspect} belonging to user #{vr.user.inspect} is VALID.")
269
263
  controller.session[client.username_session_key] = vr.user.dup
270
264
  controller.session[client.extra_attributes_session_key] = HashWithIndifferentAccess.new(vr.extra_attributes.dup)
271
-
265
+
272
266
  if vr.extra_attributes
273
267
  log.debug("Extra user attributes provided along with ticket #{st.ticket.inspect}: #{vr.extra_attributes.inspect}.")
274
268
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: derfred-rubycas-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.9992
4
+ version: 2.0.9993
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zukowski
@@ -66,6 +66,7 @@ files:
66
66
  - setup.rb
67
67
  has_rdoc: true
68
68
  homepage: http://rubycas-client.rubyforge.org
69
+ licenses:
69
70
  post_install_message:
70
71
  rdoc_options:
71
72
  - --main
@@ -87,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
88
  requirements: []
88
89
 
89
90
  rubyforge_project: rubycas-client
90
- rubygems_version: 1.2.0
91
+ rubygems_version: 1.3.5
91
92
  signing_key:
92
93
  specification_version: 2
93
94
  summary: Client library for the Central Authentication Service (CAS) protocol.