Bug 20287: Move fixup_cardnumber
[koha.git] / opac / svc / auth / googleopenidconnect
index c08b3c1..64d703e 100755 (executable)
@@ -181,42 +181,54 @@ elsif ( defined $query->param('code') ) {
                       . ' .' );
             }
             else {
+                my $error_feedback =
+'The email address you are trying to use is not associated with a borrower at this library.';
                 my $auto_registration = C4::Context->preference('GoogleOpenIDConnectAutoRegister') // q{0};
                 my $borrower = Koha::Patrons->find( { email => $email } );
                 if (! $borrower && $auto_registration==1) {
-                    my $cardnumber = fixup_cardnumber();
                     my $firstname = $claims_json->{'given_name'} // q{};
                     my $surname = $claims_json->{'family_name'} // q{};
                     my $delimiter = $firstname ? q{.} : q{};
                     my $userid = $firstname . $delimiter . $surname;
                     my $categorycode = C4::Context->preference('GoogleOpenIDConnectDefaultCategory') // q{};
+                    my $patron_category = Koha::Patron::Categories->find( $categorycode );
                     my $branchcode = C4::Context->preference('GoogleOpenIDConnectDefaultBranch') // q{};
-                    my $password = undef;
-                    my $borrowernumber = C4::Members::AddMember(
-                        cardnumber   => $cardnumber,
-                        firstname    => $firstname,
-                        surname      => $surname,
-                        email        => $email,
-                        categorycode => $categorycode,
-                        branchcode   => $branchcode,
-                        userid       => $userid,
-                        password     => $password
-                    );
-                    $borrower = Koha::Patrons->find( {
-                        borrowernumber => $borrowernumber } );
+                    my $library = Koha::Libraries->find( $branchcode );
+                    if (defined $patron_category && defined $library) {
+                        my $password = undef;
+                        my $borrowernumber = C4::Members::AddMember(
+                            firstname    => $firstname,
+                            surname      => $surname,
+                            email        => $email,
+                            categorycode => $categorycode,
+                            branchcode   => $branchcode,
+                            userid       => $userid,
+                            password     => $password
+                        );
+                        $borrower = Koha::Patrons->find( {
+                            borrowernumber => $borrowernumber } );
+                    } else {
+                        $error_feedback = 'The GoogleOpenIDConnectDefaultBranch or GoogleOpenIDConnectDefaultCategory system preferences are not configured properly. Please contact the library with this error message.';
+                    }
                 }
                 my ( $userid, $cookie, $session_id ) =
                   checkauth( $query, 1, {}, 'opac', $email );
                 if ($userid) {    # A user with this email is registered in koha
+
+                    #handle redirect to main.pl, for private opac
+                    my $uri;
+                    if (C4::Context->preference('OpacPublic') ) {
+                        $uri    =  '/cgi-bin/koha/opac-user.pl';
+                    } else {
+                        $uri    =  '/cgi-bin/koha/opac-main.pl';
+                    }
                     print $query->redirect(
-                        -uri    => '/cgi-bin/koha/opac-user.pl',
+                        -uri    => $uri,
                         -cookie => $cookie
                     );
                 }
                 else {
-                    loginfailed( $query,
-'The email address you are trying to use is not associated with a borrower at this library.'
-                    );
+                    loginfailed( $query, $error_feedback );
                 }
             }
         }