|
Lines 65-100
sub getMultipleAuth {
Link Here
|
| 65 |
# Logout from CAS |
65 |
# Logout from CAS |
| 66 |
sub logout_cas { |
66 |
sub logout_cas { |
| 67 |
my ($query) = @_; |
67 |
my ($query) = @_; |
| 68 |
my $uri = C4::Context->preference('OPACBaseURL') . $query->script_name(); |
68 |
my ( $cas, $uri ) = _get_cas_and_service($query); |
| 69 |
my $casparam = $query->param('cas'); |
|
|
| 70 |
# FIXME: This should be more generic and handle whatever parameters there might be |
| 71 |
$uri .= "?cas=" . $casparam if (defined $casparam); |
| 72 |
$casparam = $defaultcasserver if (not defined $casparam); |
| 73 |
my $cas = Authen::CAS::Client->new($casservers->{$casparam}); |
| 74 |
print $query->redirect( $cas->logout_url($uri)); |
69 |
print $query->redirect( $cas->logout_url($uri)); |
| 75 |
} |
70 |
} |
| 76 |
|
71 |
|
| 77 |
# Login to CAS |
72 |
# Login to CAS |
| 78 |
sub login_cas { |
73 |
sub login_cas { |
| 79 |
my ($query) = @_; |
74 |
my ($query) = @_; |
| 80 |
my $uri = C4::Context->preference('OPACBaseURL') . $query->script_name(); |
75 |
my ( $cas, $uri ) = _get_cas_and_service($query); |
| 81 |
my $casparam = $query->param('cas'); |
|
|
| 82 |
# FIXME: This should be more generic and handle whatever parameters there might be |
| 83 |
$uri .= "?cas=" . $casparam if (defined $casparam); |
| 84 |
$casparam = $defaultcasserver if (not defined $casparam); |
| 85 |
my $cas = Authen::CAS::Client->new($casservers->{$casparam}); |
| 86 |
print $query->redirect( $cas->login_url($uri)); |
76 |
print $query->redirect( $cas->login_url($uri)); |
| 87 |
} |
77 |
} |
| 88 |
|
78 |
|
| 89 |
# Returns CAS login URL with callback to the requesting URL |
79 |
# Returns CAS login URL with callback to the requesting URL |
| 90 |
sub login_cas_url { |
80 |
sub login_cas_url { |
| 91 |
|
81 |
my ( $query, $key ) = @_; |
| 92 |
my ($query, $key) = @_; |
82 |
my ( $cas, $uri ) = _get_cas_and_service( $query, $key ); |
| 93 |
my $uri = C4::Context->preference('OPACBaseURL') . $query->url( -absolute => 1, -query => 1 ); |
|
|
| 94 |
my $casparam = $query->param('cas'); |
| 95 |
$casparam = $defaultcasserver if (not defined $casparam); |
| 96 |
$casparam = $key if (defined $key); |
| 97 |
my $cas = Authen::CAS::Client->new($casservers->{$casparam}); |
| 98 |
return $cas->login_url($uri); |
83 |
return $cas->login_url($uri); |
| 99 |
} |
84 |
} |
| 100 |
|
85 |
|
|
Lines 104-115
sub checkpw_cas {
Link Here
|
| 104 |
$debug and warn "checkpw_cas"; |
89 |
$debug and warn "checkpw_cas"; |
| 105 |
my ($dbh, $ticket, $query) = @_; |
90 |
my ($dbh, $ticket, $query) = @_; |
| 106 |
my $retnumber; |
91 |
my $retnumber; |
| 107 |
my $uri = C4::Context->preference('OPACBaseURL') . $query->script_name(); |
92 |
my ( $cas, $uri ) = _get_cas_and_service($query); |
| 108 |
my $casparam = $query->param('cas'); |
|
|
| 109 |
# FIXME: This should be more generic and handle whatever parameters there might be |
| 110 |
$uri .= "?cas=" . $casparam if (defined $casparam); |
| 111 |
$casparam = $defaultcasserver if (not defined $casparam); |
| 112 |
my $cas = Authen::CAS::Client->new($casservers->{$casparam}); |
| 113 |
|
93 |
|
| 114 |
# If we got a ticket |
94 |
# If we got a ticket |
| 115 |
if ($ticket) { |
95 |
if ($ticket) { |
|
Lines 157-171
sub check_api_auth_cas {
Link Here
|
| 157 |
$debug and warn "check_api_auth_cas"; |
137 |
$debug and warn "check_api_auth_cas"; |
| 158 |
my ($dbh, $PT, $query) = @_; |
138 |
my ($dbh, $PT, $query) = @_; |
| 159 |
my $retnumber; |
139 |
my $retnumber; |
| 160 |
my $url = C4::Context->preference('OPACBaseURL') . $query->script_name(); |
140 |
my ( $cas, $uri ) = _get_cas_and_service($query); |
| 161 |
|
|
|
| 162 |
my $casparam = $query->param('cas'); |
| 163 |
$casparam = $defaultcasserver if (not defined $casparam); |
| 164 |
my $cas = Authen::CAS::Client->new($casservers->{$casparam}); |
| 165 |
|
141 |
|
| 166 |
# If we have a Proxy Ticket |
142 |
# If we have a Proxy Ticket |
| 167 |
if ($PT) { |
143 |
if ($PT) { |
| 168 |
my $r = $cas->proxy_validate( $url, $PT ); |
144 |
my $r = $cas->proxy_validate( $uri, $PT ); |
| 169 |
|
145 |
|
| 170 |
# If the PT is valid |
146 |
# If the PT is valid |
| 171 |
if ( $r->is_success ) { |
147 |
if ( $r->is_success ) { |
|
Lines 203-208
sub check_api_auth_cas {
Link Here
|
| 203 |
return 0; |
179 |
return 0; |
| 204 |
} |
180 |
} |
| 205 |
|
181 |
|
|
|
182 |
# Get CAS handler and service URI |
| 183 |
sub _get_cas_and_service { |
| 184 |
my $query = shift; |
| 185 |
my $key = shift; # optional |
| 186 |
|
| 187 |
my $uri = C4::Context->preference('OPACBaseURL'); # server address |
| 188 |
$uri .= $query->url( -absolute => 1, -query => 1 ); # page with params |
| 189 |
|
| 190 |
my $casparam = $defaultcasserver; |
| 191 |
$casparam = $query->param('cas') if defined $query->param('cas'); |
| 192 |
$casparam = $key if defined $key; |
| 193 |
my $cas = Authen::CAS::Client->new( $casservers->{$casparam} ); |
| 194 |
|
| 195 |
return ( $cas, $uri ); |
| 196 |
} |
| 206 |
|
197 |
|
| 207 |
1; |
198 |
1; |
| 208 |
__END__ |
199 |
__END__ |
| 209 |
- |
|
|