From b52930263257f9f4406653c33d7bcf3635be9a9e Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 8 Jan 2020 15:02:08 +0000 Subject: [PATCH] Bug 23473: Don't allow staff password changes for imports --- Koha/Patrons/Import.pm | 2 +- t/db_dependent/Koha/Patrons/Import.t | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Koha/Patrons/Import.pm b/Koha/Patrons/Import.pm index 2a605e2b7f..d700814918 100644 --- a/Koha/Patrons/Import.pm +++ b/Koha/Patrons/Import.pm @@ -290,7 +290,7 @@ sub import_patrons { ); } } - if ($overwrite_passwords && defined $borrower{password} && $borrower{password} ne ''){ + if ($patron->category->category_type ne 'S' && $overwrite_passwords && defined $borrower{password} && $borrower{password} ne ''){ try { $patron->set_password({ password => $borrower{password} }); } diff --git a/t/db_dependent/Koha/Patrons/Import.t b/t/db_dependent/Koha/Patrons/Import.t index 47dd5184e8..15c751297a 100644 --- a/t/db_dependent/Koha/Patrons/Import.t +++ b/t/db_dependent/Koha/Patrons/Import.t @@ -432,7 +432,7 @@ subtest 'test_import_with_cardnumber_0' => sub { }; subtest 'test_import_with_password_overwrite' => sub { - plan tests => 6; + plan tests => 8; #Remove possible existing user to avoid clashes my $ernest = Koha::Patrons->find({ userid => 'ErnestP' }); @@ -440,12 +440,14 @@ subtest 'test_import_with_password_overwrite' => sub { #Setup our info my $branchcode = $builder->build({ source => "Branch"})->{branchcode}; - my $categorycode = $builder->build({ source => "Category"})->{categorycode}; + my $categorycode = $builder->build({ source => "Category", value => { category_type => 'A' } })->{categorycode}; + my $staff_categorycode = $builder->build({ source => "Category", value => { category_type => 'S' } })->{categorycode}; my $csv_headers = 'surname,userid,branchcode,categorycode,password'; my $csv_password = "Worrell,ErnestP,$branchcode,$categorycode,Ernest1"; my $csv_password_change = "Worrell,ErnestP,$branchcode,$categorycode,Vern1"; my $csv_blank_password = "Worel,ErnestP,$branchcode,$categorycode,"; my $defaults = { cardnumber => "" }; #currently all the defaults come as "" if not filled + my $csv_staff_password_change = "Worrell,ErnestP,$branchcode,$staff_categorycode,Vern1"; #Make the test files for importing my $filename_1 = make_csv($temp_dir, $csv_headers, $csv_password); @@ -459,6 +461,10 @@ subtest 'test_import_with_password_overwrite' => sub { open(my $handle_3, "<", $filename_3) or die "cannot open < $filename_3: $!"; my $params_3 = { file => $handle_3, matchpoint => 'userid', overwrite_passwords => 1, overwrite_cardnumber => 1}; + my $filename_4 = make_csv($temp_dir, $csv_headers, $csv_staff_password_change); + open(my $handle_4, "<", $filename_4) or die "cannot open < $filename_4: $!"; + my $params_4 = { file => $handle_4, matchpoint => 'userid', overwrite_passwords => 1, overwrite_cardnumber => 1}; + my $result = $patrons_import->import_patrons($params_1, $defaults); like($result->{feedback}->[1]->{value}, qr/^Worrell \/ \d+/, 'First borrower imported as expected'); @@ -481,6 +487,15 @@ subtest 'test_import_with_password_overwrite' => sub { is($ernest->surname,'Worel',"Patron is overwritten, surname changed"); is($ernest->password,$orig_pass,"Patron was overwritten but password is not overwritten if blank"); + $ernest->category($staff_categorycode); + $ernest->store; + + $result = $patrons_import->import_patrons($params_4, $defaults); + warn Data::Dumper::Dumper( $result ); + $ernest = Koha::Patrons->find({ userid => 'ErnestP' }); + is($ernest->surname,'Worrell',"Patron is overwritten, surname changed"); + is($ernest->password,$orig_pass,"Patron is imported, password is not changed for staff"); + }; -- 2.11.0