Skip to content

Commit f2a8614

Browse files
AeonRobert Mitwicki
authored andcommitted
Accept a new "from" parameter in the urls
this should be a path that will be combined with @service_url parameter for the user redirection after successful login.
1 parent 9bb8374 commit f2a8614

2 files changed

Lines changed: 15 additions & 2 deletions

File tree

lib/casserver/server.rb

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,12 @@ def self.init_database!
304304

305305
# optional params
306306
@service = clean_service_url(params['service'])
307+
@from = clean_service_url(params['from'])
308+
@return_url = if @from.blank?
309+
@service
310+
else
311+
@service + @from
312+
end
307313
@renew = params['renew']
308314
@gateway = params['gateway'] == 'true' || params['gateway'] == '1'
309315

@@ -334,7 +340,7 @@ def self.init_database!
334340
elsif tgt && !tgt_error
335341
$LOG.debug("Valid ticket granting ticket detected.")
336342
st = generate_service_ticket(@service, tgt.username, tgt)
337-
service_with_ticket = service_uri_with_ticket(@service, st)
343+
service_with_ticket = service_uri_with_ticket(@return_url, st)
338344
$LOG.info("User '#{tgt.username}' authenticated based on ticket granting cookie. Redirecting to service '#{@service}'.")
339345
redirect service_with_ticket, 303 # response code 303 means "See Other" (see Appendix B in CAS Protocol spec)
340346
elsif @gateway
@@ -396,6 +402,12 @@ def self.init_database!
396402

397403
# 2.2.1 (optional)
398404
@service = clean_service_url(params['service'])
405+
@from = clean_service_url(params['from'])
406+
@return_url = if @from.blank?
407+
@service
408+
else
409+
@service + @from
410+
end
399411

400412
# 2.2.2 (required)
401413
@username = params['username']
@@ -470,7 +482,7 @@ def self.init_database!
470482
@st = generate_service_ticket(@service, @username, tgt)
471483

472484
begin
473-
service_with_ticket = service_uri_with_ticket(@service, @st)
485+
service_with_ticket = service_uri_with_ticket(@return_url, @st)
474486

475487
$LOG.info("Redirecting authenticated user '#{@username}' at '#{@st.client_hostname}' to service '#{@service}'")
476488
redirect service_with_ticket, 303 # response code 303 means "See Other" (see Appendix B in CAS Protocol spec)

lib/casserver/views/_login_form.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<td id="submit-container">
3030
<input type="hidden" id="lt" name="lt" value="<%= escape_html @lt %>" />
3131
<input type="hidden" id="service" name="service" value="<%= escape_html @service %>" />
32+
<input type="hidden" id="from" name="from" value="<%= escape_html @from %>" />
3233
<input type="submit" class="button" accesskey="l" value="<%= t.button.login %>"
3334
tabindex="4" id="login-submit" />
3435
</td>

0 commit comments

Comments
 (0)