View | Details | Raw Unified | Return to bug 23042
Collapse All | Expand All

(-)a/C4/Auth_with_shibboleth.pm (-7 / +26 lines)
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
- 

Return to bug 23042