Lines 54-71
sub shib_ok {
Link Here
|
54 |
sub logout_shib { |
54 |
sub logout_shib { |
55 |
my ($query) = @_; |
55 |
my ($query) = @_; |
56 |
my $uri = _get_uri(); |
56 |
my $uri = _get_uri(); |
57 |
print $query->redirect( $uri . "/Shibboleth.sso/Logout?return=$uri" ); |
57 |
my $return = _get_return($query); |
|
|
58 |
print $query->redirect( $uri . "/Shibboleth.sso/Logout?return=$return" ); |
58 |
} |
59 |
} |
59 |
|
60 |
|
60 |
# Returns Shibboleth login URL with callback to the requesting URL |
61 |
# Returns Shibboleth login URL with callback to the requesting URL |
61 |
sub login_shib_url { |
62 |
sub login_shib_url { |
62 |
my ($query) = @_; |
63 |
my ($query) = @_; |
63 |
|
64 |
|
64 |
my $param = _get_uri() . get_script_name(); |
65 |
my $target = _get_return($query); |
65 |
if ( $query->query_string() ) { |
66 |
my $uri = _get_uri() . "/Shibboleth.sso/Login?target=" . $target; |
66 |
$param = $param . '?' . $query->query_string(); |
67 |
|
67 |
} |
|
|
68 |
my $uri = _get_uri() . "/Shibboleth.sso/Login?target=$param"; |
69 |
return $uri; |
68 |
return $uri; |
70 |
} |
69 |
} |
71 |
|
70 |
|
Lines 189-194
sub _get_uri {
Link Here
|
189 |
return $return; |
188 |
return $return; |
190 |
} |
189 |
} |
191 |
|
190 |
|
|
|
191 |
sub _get_return { |
192 |
my ($query) = @_; |
193 |
|
194 |
my $uri_base_part = _get_uri() . get_script_name(); |
195 |
|
196 |
my $uri_params_part = ''; |
197 |
foreach my $param ( $query->url_param() ) { |
198 |
# url_param() always returns parameters that were deleted by delete() |
199 |
# This additional check ensure that parameter was not deleted. |
200 |
my $uriPiece = $query->param($param); |
201 |
if ($uriPiece) { |
202 |
$uri_params_part .= '&' if $uri_params_part; |
203 |
$uri_params_part .= $param . '='; |
204 |
$uri_params_part .= URI::Escape::uri_escape( $uriPiece ); |
205 |
} |
206 |
} |
207 |
$uri_base_part .= '%3F' if $uri_params_part; |
208 |
|
209 |
return $uri_base_part . $uri_params_part; |
210 |
} |
211 |
|
192 |
sub _get_shib_config { |
212 |
sub _get_shib_config { |
193 |
my $config = C4::Context->config('shibboleth'); |
213 |
my $config = C4::Context->config('shibboleth'); |
194 |
|
214 |
|
195 |
- |
|
|