|
Lines 152-158
Output.pm module.
Link Here
|
| 152 |
sub get_template_and_user { |
152 |
sub get_template_and_user { |
| 153 |
|
153 |
|
| 154 |
my $in = shift; |
154 |
my $in = shift; |
| 155 |
my ( $user, $cookie, $sessionID, $flags ); |
155 |
my ( $user, $cookies, $sessionID, $flags ); |
| 156 |
|
156 |
|
| 157 |
# Get shibboleth login attribute |
157 |
# Get shibboleth login attribute |
| 158 |
my $shib = C4::Context->config('useshibboleth') && shib_ok(); |
158 |
my $shib = C4::Context->config('useshibboleth') && shib_ok(); |
|
Lines 170-176
sub get_template_and_user {
Link Here
|
| 170 |
); |
170 |
); |
| 171 |
|
171 |
|
| 172 |
if ( $in->{'template_name'} !~ m/maintenance/ ) { |
172 |
if ( $in->{'template_name'} !~ m/maintenance/ ) { |
| 173 |
( $user, $cookie, $sessionID, $flags ) = checkauth( |
173 |
( $user, $cookies, $sessionID, $flags ) = checkauth( |
| 174 |
$in->{'query'}, |
174 |
$in->{'query'}, |
| 175 |
$in->{'authnotrequired'}, |
175 |
$in->{'authnotrequired'}, |
| 176 |
$in->{'flagsrequired'}, |
176 |
$in->{'flagsrequired'}, |
|
Lines 192-198
sub get_template_and_user {
Link Here
|
| 192 |
given_on => { '!=', undef }, |
192 |
given_on => { '!=', undef }, |
| 193 |
})->next; |
193 |
})->next; |
| 194 |
if( !$consent ) { |
194 |
if( !$consent ) { |
| 195 |
print $in->{query}->redirect(-uri => '/cgi-bin/koha/opac-patron-consent.pl', -cookie => $cookie); |
195 |
print $in->{query}->redirect(-uri => '/cgi-bin/koha/opac-patron-consent.pl', -cookie => $cookies); |
| 196 |
safe_exit; |
196 |
safe_exit; |
| 197 |
} |
197 |
} |
| 198 |
} |
198 |
} |
|
Lines 230-236
sub get_template_and_user {
Link Here
|
| 230 |
if ($kick_out) { |
230 |
if ($kick_out) { |
| 231 |
$template = C4::Templates::gettemplate( 'opac-auth.tt', 'opac', |
231 |
$template = C4::Templates::gettemplate( 'opac-auth.tt', 'opac', |
| 232 |
$in->{query} ); |
232 |
$in->{query} ); |
| 233 |
$cookie = $in->{query}->cookie( |
233 |
push @$cookies, $in->{query}->cookie( |
| 234 |
-name => 'CGISESSID', |
234 |
-name => 'CGISESSID', |
| 235 |
-value => '', |
235 |
-value => '', |
| 236 |
-expires => '', |
236 |
-expires => '', |
|
Lines 247-253
sub get_template_and_user {
Link Here
|
| 247 |
{ |
247 |
{ |
| 248 |
type => 'text/html', |
248 |
type => 'text/html', |
| 249 |
charset => 'utf-8', |
249 |
charset => 'utf-8', |
| 250 |
cookie => $cookie, |
250 |
cookie => $cookies, |
| 251 |
'X-Frame-Options' => 'SAMEORIGIN' |
251 |
'X-Frame-Options' => 'SAMEORIGIN' |
| 252 |
} |
252 |
} |
| 253 |
), |
253 |
), |
|
Lines 638-651
sub get_template_and_user {
Link Here
|
| 638 |
# what to do |
638 |
# what to do |
| 639 |
my $language = C4::Languages::getlanguage( $in->{'query'} ); |
639 |
my $language = C4::Languages::getlanguage( $in->{'query'} ); |
| 640 |
my $languagecookie = C4::Templates::getlanguagecookie( $in->{'query'}, $language ); |
640 |
my $languagecookie = C4::Templates::getlanguagecookie( $in->{'query'}, $language ); |
| 641 |
if ( ref $cookie eq 'ARRAY' ) { |
641 |
push @{$cookies}, $languagecookie; |
| 642 |
push @{$cookie}, $languagecookie; |
|
|
| 643 |
} else { |
| 644 |
$cookie = [ $cookie, $languagecookie ]; |
| 645 |
} |
| 646 |
} |
642 |
} |
| 647 |
|
643 |
|
| 648 |
return ( $template, $borrowernumber, $cookie, $flags ); |
644 |
return ( $template, $borrowernumber, $cookies, $flags ); |
| 649 |
} |
645 |
} |
| 650 |
|
646 |
|
| 651 |
=head2 checkauth |
647 |
=head2 checkauth |
|
Lines 792-797
sub _timeout_syspref {
Link Here
|
| 792 |
return $timeout; |
788 |
return $timeout; |
| 793 |
} |
789 |
} |
| 794 |
|
790 |
|
|
|
791 |
sub clear_all_cookies { |
| 792 |
my ( $query ) = shift; |
| 793 |
my @cookies; |
| 794 |
for my $cookie_name ( $query->cookie ) { |
| 795 |
push @cookies, $query->cookie( -name => $cookie_name, -value => '', -expires => '', -HttpOnly => 1 ); |
| 796 |
} |
| 797 |
return \@cookies; |
| 798 |
} |
| 799 |
|
| 795 |
sub checkauth { |
800 |
sub checkauth { |
| 796 |
my $query = shift; |
801 |
my $query = shift; |
| 797 |
|
802 |
|
|
Lines 827-835
sub checkauth {
Link Here
|
| 827 |
# state variables |
832 |
# state variables |
| 828 |
my $loggedin = 0; |
833 |
my $loggedin = 0; |
| 829 |
my %info; |
834 |
my %info; |
| 830 |
my ( $userid, $cookie, $sessionID, $flags ); |
835 |
my ( $userid, $sessionID, $flags ); |
|
|
836 |
my $cookies = []; |
| 831 |
my $logout = $query->param('logout.x'); |
837 |
my $logout = $query->param('logout.x'); |
| 832 |
|
|
|
| 833 |
my $anon_search_history; |
838 |
my $anon_search_history; |
| 834 |
my $cas_ticket = ''; |
839 |
my $cas_ticket = ''; |
| 835 |
# This parameter is the name of the CAS server we want to authenticate against, |
840 |
# This parameter is the name of the CAS server we want to authenticate against, |
|
Lines 851-857
sub checkauth {
Link Here
|
| 851 |
if ( !$shib and defined( $ENV{'REMOTE_USER'} ) and $ENV{'REMOTE_USER'} ne '' and $userid = $ENV{'REMOTE_USER'} ) { |
856 |
if ( !$shib and defined( $ENV{'REMOTE_USER'} ) and $ENV{'REMOTE_USER'} ne '' and $userid = $ENV{'REMOTE_USER'} ) { |
| 852 |
|
857 |
|
| 853 |
# Using Basic Authentication, no cookies required |
858 |
# Using Basic Authentication, no cookies required |
| 854 |
$cookie = $query->cookie( |
859 |
push @$cookies, $query->cookie( |
| 855 |
-name => 'CGISESSID', |
860 |
-name => 'CGISESSID', |
| 856 |
-value => '', |
861 |
-value => '', |
| 857 |
-expires => '', |
862 |
-expires => '', |
|
Lines 894-899
sub checkauth {
Link Here
|
| 894 |
my $shibSuccess = C4::Context->userenv->{'shibboleth'}; |
899 |
my $shibSuccess = C4::Context->userenv->{'shibboleth'}; |
| 895 |
$session->delete(); |
900 |
$session->delete(); |
| 896 |
$session->flush; |
901 |
$session->flush; |
|
|
902 |
$cookies = clear_all_cookies($query); |
| 897 |
C4::Context->_unset_userenv($sessionID); |
903 |
C4::Context->_unset_userenv($sessionID); |
| 898 |
|
904 |
|
| 899 |
if ($cas and $caslogout) { |
905 |
if ($cas and $caslogout) { |
|
Lines 906-912
sub checkauth {
Link Here
|
| 906 |
} |
912 |
} |
| 907 |
} else { |
913 |
} else { |
| 908 |
|
914 |
|
| 909 |
$cookie = $query->cookie( |
915 |
push @$cookies, $query->cookie( |
| 910 |
-name => 'CGISESSID', |
916 |
-name => 'CGISESSID', |
| 911 |
-value => $session->id, |
917 |
-value => $session->id, |
| 912 |
-HttpOnly => 1, |
918 |
-HttpOnly => 1, |
|
Lines 952-958
sub checkauth {
Link Here
|
| 952 |
|
958 |
|
| 953 |
$sessionID = $session->id; |
959 |
$sessionID = $session->id; |
| 954 |
C4::Context->_new_userenv($sessionID); |
960 |
C4::Context->_new_userenv($sessionID); |
| 955 |
$cookie = $query->cookie( |
961 |
push @$cookies, $query->cookie( |
| 956 |
-name => 'CGISESSID', |
962 |
-name => 'CGISESSID', |
| 957 |
-value => $sessionID, |
963 |
-value => $sessionID, |
| 958 |
-HttpOnly => 1, |
964 |
-HttpOnly => 1, |
|
Lines 1152-1158
sub checkauth {
Link Here
|
| 1152 |
$domain =~ s|\.\*||g; |
1158 |
$domain =~ s|\.\*||g; |
| 1153 |
if ( $ip !~ /^$domain/ ) { |
1159 |
if ( $ip !~ /^$domain/ ) { |
| 1154 |
$loggedin = 0; |
1160 |
$loggedin = 0; |
| 1155 |
$cookie = $query->cookie( |
1161 |
push @$cookies, $query->cookie( |
| 1156 |
-name => 'CGISESSID', |
1162 |
-name => 'CGISESSID', |
| 1157 |
-value => '', |
1163 |
-value => '', |
| 1158 |
-HttpOnly => 1, |
1164 |
-HttpOnly => 1, |
|
Lines 1232-1239
sub checkauth {
Link Here
|
| 1232 |
if ( $loggedin || $authnotrequired ) |
1238 |
if ( $loggedin || $authnotrequired ) |
| 1233 |
{ |
1239 |
{ |
| 1234 |
# successful login |
1240 |
# successful login |
| 1235 |
unless ($cookie) { |
1241 |
unless (@$cookies) { |
| 1236 |
$cookie = $query->cookie( |
1242 |
push @$cookies, $query->cookie( |
| 1237 |
-name => 'CGISESSID', |
1243 |
-name => 'CGISESSID', |
| 1238 |
-value => '', |
1244 |
-value => '', |
| 1239 |
-HttpOnly => 1, |
1245 |
-HttpOnly => 1, |
|
Lines 1251-1261
sub checkauth {
Link Here
|
| 1251 |
$uri->query_param_delete('userid'); |
1257 |
$uri->query_param_delete('userid'); |
| 1252 |
$uri->query_param_delete('password'); |
1258 |
$uri->query_param_delete('password'); |
| 1253 |
$uri->query_param_delete('koha_login_context'); |
1259 |
$uri->query_param_delete('koha_login_context'); |
| 1254 |
print $query->redirect(-uri => $uri->as_string, -cookie => $cookie, -status=>'303 See other'); |
1260 |
print $query->redirect(-uri => $uri->as_string, -cookie => $cookies, -status=>'303 See other'); |
| 1255 |
exit; |
1261 |
exit; |
| 1256 |
} |
1262 |
} |
| 1257 |
|
1263 |
|
| 1258 |
return ( $userid, $cookie, $sessionID, $flags ); |
1264 |
return ( $userid, $cookies, $sessionID, $flags ); |
| 1259 |
} |
1265 |
} |
| 1260 |
|
1266 |
|
| 1261 |
# |
1267 |
# |
|
Lines 1389-1395
sub checkauth {
Link Here
|
| 1389 |
print $query->header( |
1395 |
print $query->header( |
| 1390 |
{ type => 'text/html', |
1396 |
{ type => 'text/html', |
| 1391 |
charset => 'utf-8', |
1397 |
charset => 'utf-8', |
| 1392 |
cookie => $cookie, |
1398 |
cookie => $cookies, |
| 1393 |
'X-Frame-Options' => 'SAMEORIGIN' |
1399 |
'X-Frame-Options' => 'SAMEORIGIN' |
| 1394 |
} |
1400 |
} |
| 1395 |
), |
1401 |
), |
| 1396 |
- |
|
|