@@ -, +, @@ --- opac/svc/auth/googleoauth2 | 47 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 25 deletions(-) --- a/opac/svc/auth/googleoauth2 +++ a/opac/svc/auth/googleoauth2 @@ -46,9 +46,9 @@ use LWP::UserAgent; use HTTP::Request::Common qw{ POST }; use JSON; -my $scope = "openid email"; -my $host = C4::Context->preference('OPACBaseURL') // ''; -my $restricttodomain = C4::Context->preference('GoogleOAuth2Domain') // ''; +my $scope = 'openid email'; +my $host = C4::Context->preference('OPACBaseURL') // q{}; +my $restricttodomain = C4::Context->preference('GoogleOAuth2Domain') // q{}; # protocol is assumed in OPACBaseURL see bug 5010. my $redirecturl = $host . '/cgi-bin/koha/svc/auth/googleoauth2'; @@ -56,25 +56,25 @@ my $issuer = 'accounts.google.com'; my $clientid = C4::Context->preference('GoogleOAuth2ClientID'); my $clientsecret = C4::Context->preference('GoogleOAuth2ClientSecret'); -my $query = new CGI; +my $query = CGI->new; sub loginfailed { - my $query = shift; - my $reason = shift; - $query->delete('code'); - $query->param( 'OAuth2Failed' => $reason ); + my $cgi_query = shift; + my $reason = shift; + $cgi_query->delete('code'); + $cgi_query->param( 'OAuth2Failed' => $reason ); my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { template_name => 'opac-user.tt', - query => $query, + query => $cgi_query, type => 'opac', authnotrequired => 0, - flagsrequired => { borrow => 1 }, } ); $template->param( 'invalidOAuth2Login' => $reason ); $template->param( 'loginprompt' => 1 ); - output_html_with_http_headers $query, $cookie, $template->output; + output_html_with_http_headers $cgi_query, $cookie, $template->output; + return; } if ( defined $query->param('error') ) { @@ -94,7 +94,7 @@ elsif ( defined $query->param('code') ) { client_secret => $clientsecret, redirect_uri => $redirecturl, grant_type => 'authorization_code', - $scope => $scope + $scope => $scope ] ); my $response = $ua->request($request)->decoded_content; @@ -111,11 +111,11 @@ elsif ( defined $query->param('code') ) { && exists( $json->{'email'} ) ) { my $email = $json->{'email'}; - my ( $userid, $cookie, $sessionID ) = - checkauth( $query, 1, { borrow => 1 }, 'opac', $email ); + my ( $userid, $cookie, $session_id ) = + checkauth( $query, 1, { }, 'opac', $email ); if ($userid) { # A valid user has logged in - if ( ( $restricttodomain ne '' ) - && ( index( $email, $restricttodomain ) == -1 ) ) + if ( ( $restricttodomain ne q{} ) + && ( index( $email, $restricttodomain ) < 0 ) ) { loginfailed( $query, 'The email you have used is not valid for this library. Email addresses should conclude with ' @@ -148,22 +148,19 @@ elsif ( defined $query->param('code') ) { } else { - my $prompt = ''; - $prompt = $query->param('reauthenticate') - unless not( defined $query->param('reauthenticate') ); + my $prompt = $query->param('reauthenticate') // q{}; my $authorisationurl = 'https://accounts.google.com/o/oauth2/auth?' . 'response_type=code&' . 'redirect_uri=' - . escape($redirecturl) . '&' + . escape($redirecturl) . q{&} . 'client_id=' - . escape($clientid) . '&' + . escape($clientid) . q{&} . 'scope=' - . escape($scope) . '&'; - if ( $query->param('reauthenticate') ) { - $authorisationurl .= - 'prompt=' . escape( $query->param('reauthenticate') ); + . escape($scope) . q{&}; + if ( $prompt || ( defined $prompt && length $prompt > 0 ) ) { + $authorisationurl .= 'prompt=' . escape($prompt); } print $query->redirect($authorisationurl); } --