Bug 18403: Deal with the DB user
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 12 Apr 2017 12:56:22 +0000 (09:56 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 12 Feb 2018 18:41:42 +0000 (15:41 -0300)
On first login, Koha explodes before the logged in user does not exist
in DB.
This patch deals with that by adding several checks when it's needed.

Test plan:
Use the DB user to create a superlibrarian user.
The DB user should no be allowed to do anything else.

Signed-off-by: Signed-off-by: Jon McGowan <jon.mcgowan@ptfs-europe.com>
Bug 18403: Fix patron creation

memberentry.pl can be called to create a new patron, in that case the
patron does not exist yet.

Signed-off-by: Signed-off-by: Jon McGowan <jon.mcgowan@ptfs-europe.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/Auth.pm
Koha/ArticleRequests.pm
Koha/Libraries.pm
Koha/Patron/Discharge.pm
Koha/Patron/Modifications.pm
Koha/Patrons.pm
Koha/Reviews.pm
members/member-flags.pl
members/memberentry.pl
members/moremember.pl

index 7903099..f642264 100644 (file)
@@ -254,7 +254,7 @@ sub get_template_and_user {
             );
         }
 
-        $template->param( "USER_INFO" => $patron->unblessed );
+        $template->param( "USER_INFO" => $patron->unblessed ) if $borrowernumber != 0;
 
         my $all_perms = get_all_subpermissions();
 
index 27be468..c43c23e 100644 (file)
@@ -51,7 +51,7 @@ sub search_limited {
 
     my $userenv = C4::Context->userenv;
     my @restricted_branchcodes;
-    if ( $userenv ) {
+    if ( $userenv and $userenv->{number} ) {
         my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
         @restricted_branchcodes = $logged_in_user->libraries_where_can_see_patrons;
     }
index 5d88c6b..38a61a4 100644 (file)
@@ -46,7 +46,8 @@ sub search_filtered {
     my ( $self, $params, $attributes ) = @_;
 
     my @branchcodes;
-    if ( my $userenv = C4::Context->userenv ) {
+    my $userenv = C4::Context->userenv;
+    if ( $userenv and $userenv->{number} ) {
         my $only_from_group = $params->{only_from_group};
         if ( $only_from_group ) {
             my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
index 44bcc5d..a1f4942 100644 (file)
@@ -184,7 +184,7 @@ sub search_limited {
     my ( $params, $attributes ) = @_;
     my $userenv = C4::Context->userenv;
     my @restricted_branchcodes;
-    if ( $userenv ) {
+    if ( $userenv and $userenv->{number} ) {
         my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
         @restricted_branchcodes = $logged_in_user->libraries_where_can_see_patrons;
     }
index 7300568..5b424cd 100644 (file)
@@ -54,7 +54,7 @@ sub pending_count {
 
     my $userenv = C4::Context->userenv;
     my @branchcodes;
-    if ( $userenv ) {
+    if ( $userenv and $userenv->{number} ) {
         my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
         if ($branchcode) {
             return 0 unless $logged_in_user->can_see_patrons_from($branchcode);
index 79d5ab8..fe8dd52 100644 (file)
@@ -54,7 +54,7 @@ sub search_limited {
 
     my $userenv = C4::Context->userenv;
     my @restricted_branchcodes;
-    if ( $userenv ) {
+    if ( $userenv and $userenv->{number} ) {
         my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
         @restricted_branchcodes = $logged_in_user->libraries_where_can_see_patrons;
     }
index a5fcae3..1e980a9 100644 (file)
@@ -48,7 +48,7 @@ sub search_limited {
 
     my $userenv = C4::Context->userenv;
     my @restricted_branchcodes;
-    if ( $userenv ) {
+    if ( $userenv and $userenv->{number} ) {
         my $logged_in_user = Koha::Patrons->find( $userenv->{number} );
         @restricted_branchcodes = $logged_in_user->libraries_where_can_see_patrons;
     }
index 21618e5..178415f 100755 (executable)
@@ -45,8 +45,11 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({
         debug           => 1,
 });
 
-my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
-output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+my $userenv = C4::Context->userenv;
+if ( $userenv and $userenv->{number} ) { # Allow DB user to create a superlibrarian patron
+    my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
+    output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+}
 
 my %member2;
 $member2{'borrowernumber'}=$member;
index b72f8da..228bc5e 100755 (executable)
@@ -76,7 +76,6 @@ my ($template, $loggedinuser, $cookie)
        });
 
 my $borrowernumber = $input->param('borrowernumber');
-my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
 my $patron         = Koha::Patrons->find($borrowernumber);
 
 if ( C4::Context->preference('SMSSendDriver') eq 'Email' ) {
@@ -107,7 +106,6 @@ my $borrower_data;
 my $NoUpdateLogin;
 my $userenv = C4::Context->userenv;
 
-
 ## Deal with debarments
 $template->param(
     debarments => scalar GetDebarments( { borrowernumber => $borrowernumber } ) );
@@ -154,7 +152,11 @@ $template->param( "quickadd" => 1 ) if ( $quickadd );
 $template->param( "duplicate" => 1 ) if ( $op eq 'duplicate' );
 $template->param( "checked" => 1 ) if ( defined($nodouble) && $nodouble eq 1 );
 if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' ) {
-    output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+    if ( $patron and $userenv and $userenv->{number} ) { # Allow DB user to create a superlibrarian patron
+        my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
+        output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+    }
+
     $borrower_data = $patron->unblessed;
     $borrower_data->{category_type} = $patron->category->category_type;
 }
index 2f2e142..29eea1f 100755 (executable)
@@ -121,9 +121,12 @@ $borrowernumber = HTML::Entities::encode($borrowernumber);
 my $error = $input->param('error');
 $template->param( error => $error ) if ( $error );
 
-my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
 my $patron         = Koha::Patrons->find( $borrowernumber );
-output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+my $userenv = C4::Context->userenv;
+if ( $userenv and $userenv->{number} ) { # Allow DB user to create a superlibrarian patron
+    my $logged_in_user = Koha::Patrons->find( $loggedinuser ) or die "Not logged in";
+    output_and_exit_if_error( $input, $cookie, $template, { module => 'members', logged_in_user => $logged_in_user, current_patron => $patron } );
+}
 
 my $issues        = $patron->checkouts;
 my $balance       = $patron->account->balance;
@@ -202,7 +205,6 @@ $bor{'borrowernumber'} = $borrowernumber;
 # Converts the branchcode to the branch name
 my $samebranch;
 if ( C4::Context->preference("IndependentBranches") ) {
-    my $userenv = C4::Context->userenv;
     if ( C4::Context->IsSuperLibrarian() ) {
         $samebranch = 1;
     }