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 |
- |
|
|