View | Details | Raw Unified | Return to bug 23473
Collapse All | Expand All

(-)a/Koha/Patron.pm (-1 lines)
Lines 225-231 sub store { Link Here
225
225
226
                # Make a copy of the plain text password for later use
226
                # Make a copy of the plain text password for later use
227
                $self->plain_text_password( $self->password );
227
                $self->plain_text_password( $self->password );
228
229
                # Create a disabled account if no password provided
228
                # Create a disabled account if no password provided
230
                $self->password( $self->password
229
                $self->password( $self->password
231
                    ? Koha::AuthUtils::hash_password( $self->password )
230
                    ? Koha::AuthUtils::hash_password( $self->password )
(-)a/Koha/Patrons/Import.pm (-2 / +6 lines)
Lines 72-77 sub import_patrons { Link Here
72
    my $defaults             = $params->{defaults};
72
    my $defaults             = $params->{defaults};
73
    my $ext_preserve         = $params->{preserve_extended_attributes};
73
    my $ext_preserve         = $params->{preserve_extended_attributes};
74
    my $overwrite_cardnumber = $params->{overwrite_cardnumber};
74
    my $overwrite_cardnumber = $params->{overwrite_cardnumber};
75
    my $overwrite_passwords  = $params->{overwrite_passwords};
75
    my $extended             = C4::Context->preference('ExtendedPatronAttributes');
76
    my $extended             = C4::Context->preference('ExtendedPatronAttributes');
76
    my $set_messaging_prefs  = C4::Context->preference('EnhancedMessagingPreferences');
77
    my $set_messaging_prefs  = C4::Context->preference('EnhancedMessagingPreferences');
77
78
Lines 236-243 sub import_patrons { Link Here
236
                # use values from extant patron unless our csv file includes this column or we provided a default.
237
                # use values from extant patron unless our csv file includes this column or we provided a default.
237
                # FIXME : You cannot update a field with a  perl-evaluated false value using the defaults.
238
                # FIXME : You cannot update a field with a  perl-evaluated false value using the defaults.
238
239
239
                # The password is always encrypted, skip it!
240
                # The password is always encrypted, skip it unless we are forcing overwrite!
240
                next if $col eq 'password';
241
                next if $col eq 'password' && !$overwrite_passwords;
241
242
242
                unless ( exists( $csvkeycol{$col} ) || $defaults->{$col} ) {
243
                unless ( exists( $csvkeycol{$col} ) || $defaults->{$col} ) {
243
                    $borrower{$col} = $member->{$col} if ( $member->{$col} );
244
                    $borrower{$col} = $member->{$col} if ( $member->{$col} );
Lines 282-287 sub import_patrons { Link Here
282
                    );
283
                    );
283
                }
284
                }
284
            }
285
            }
286
            if ($overwrite_passwords){
287
                $patron->set_password({ password => $borrower{password} });
288
            }
285
            if ($extended) {
289
            if ($extended) {
286
                if ($ext_preserve) {
290
                if ($ext_preserve) {
287
                    my $old_attributes = GetBorrowerAttributes($borrowernumber);
291
                    my $old_attributes = GetBorrowerAttributes($borrowernumber);
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt (-1 / +14 lines)
Lines 217-222 Link Here
217
217
218
                <li class="radio">
218
                <li class="radio">
219
                    <input type="radio" id="overwrite_cardnumberyes" name="overwrite_cardnumber" value="1" /><label for="overwrite_cardnumberyes">Overwrite the existing one with this</label>
219
                    <input type="radio" id="overwrite_cardnumberyes" name="overwrite_cardnumber" value="1" /><label for="overwrite_cardnumberyes">Overwrite the existing one with this</label>
220
                    <ul>
221
                        <li>
222
                            <input type="checkbox" id="overwrite_passwords" name="overwrite_passwords" disabled="true"/>
223
                            <label for="overwrite_passwords">Replace patron passwords with those in the file</label>
224
                        </li
225
                    </ul>
220
                </li>
226
                </li>
221
            </ol>
227
            </ol>
222
        </fieldset>
228
        </fieldset>
Lines 273-279 Link Here
273
        </li>
279
        </li>
274
280
275
        <li>
281
        <li>
276
            'password' should be stored in plaintext, and will be converted to a Bcrypt hash (if your passwords are already encrypted, talk to your system administrator about options).
282
            'password' should be stored in plaintext, and will be converted to a Bcrypt hash (if your passwords are already encrypted, talk to your system administrator about options). Passwords will not be updated on overwrite unless replace passwords option is checked.
277
        </li>
283
        </li>
278
284
279
        <li>
285
        <li>
Lines 304-309 you can supply dates in ISO format (e.g., '2010-10-28'). Link Here
304
            [%# Make date fields have the datepicker %]
310
            [%# Make date fields have the datepicker %]
305
            $("#dateenrolled, #dateexpiry, #dateofbirth").datepicker();
311
            $("#dateenrolled, #dateexpiry, #dateofbirth").datepicker();
306
        });
312
        });
313
314
        $("#overwrite_cardnumberno").click(function(){
315
            $("#overwrite_passwords").prop('checked',false).prop('disabled',true);
316
        });
317
        $("#overwrite_cardnumberyes").click(function(){
318
            $("#overwrite_passwords").prop('disabled',false);
319
        });
307
    </script>
320
    </script>
308
[% END %]
321
[% END %]
309
[% INCLUDE 'intranet-bottom.inc' %]
322
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/misc/import_patrons.pl (+3 lines)
Lines 29-34 my $Import = Koha::Patrons::Import->new(); Link Here
29
my $csv_file;
29
my $csv_file;
30
my $matchpoint;
30
my $matchpoint;
31
my $overwrite_cardnumber;
31
my $overwrite_cardnumber;
32
my $overwrite_passwords;
32
my %defaults;
33
my %defaults;
33
my $ext_preserve = 0;
34
my $ext_preserve = 0;
34
my $confirm;
35
my $confirm;
Lines 41-46 GetOptions( Link Here
41
    'm|matchpoint=s'                => \$matchpoint,
42
    'm|matchpoint=s'                => \$matchpoint,
42
    'd|default=s'                   => \%defaults,
43
    'd|default=s'                   => \%defaults,
43
    'o|overwrite'                   => \$overwrite_cardnumber,
44
    'o|overwrite'                   => \$overwrite_cardnumber,
45
    'op|overwrite_passwords'        => \$overwrite_passwords,
44
    'p|preserve-extended-attributes' => \$ext_preserve,
46
    'p|preserve-extended-attributes' => \$ext_preserve,
45
    'v|verbose+'                    => \$verbose,
47
    'v|verbose+'                    => \$verbose,
46
    'h|help|?'                      => \$help,
48
    'h|help|?'                      => \$help,
Lines 61-66 my $return = $Import->import_patrons( Link Here
61
        defaults                     => \%defaults,
63
        defaults                     => \%defaults,
62
        matchpoint                   => $matchpoint,
64
        matchpoint                   => $matchpoint,
63
        overwrite_cardnumber         => $overwrite_cardnumber,
65
        overwrite_cardnumber         => $overwrite_cardnumber,
66
        overwrite_passwords          => $overwrite_passwords,
64
        preserve_extended_attributes => $ext_preserve,
67
        preserve_extended_attributes => $ext_preserve,
65
    }
68
    }
66
);
69
);
(-)a/t/db_dependent/Koha/Patrons/Import.t (-1 / +40 lines)
Lines 18-24 Link Here
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
use Test::More tests => 157;
21
use Test::More tests => 158;
22
use Test::Warn;
22
use Test::Warn;
23
23
24
# To be replaced by t::lib::Mock
24
# To be replaced by t::lib::Mock
Lines 428-433 subtest 'test_import_with_cardnumber_0' => sub { Link Here
428
428
429
};
429
};
430
430
431
subtest 'test_import_with_password_overwrite' => sub {
432
    plan tests => 4;
433
434
    #Remove possible existing user to avoid clashes
435
    my $ernest = Koha::Patrons->find({ userid => 'ErnestP' });
436
    $ernest->delete if $ernest;
437
438
    #Setup our info
439
    my $branchcode = $builder->build({ source => "Branch"})->{branchcode};
440
    my $categorycode = $builder->build({ source => "Category"})->{categorycode};
441
    my $csv_headers  = 'surname,userid,branchcode,categorycode,password';
442
    my $csv_password = "Worrell,ErnestP,$branchcode,$categorycode,Ernest";
443
    my $csv_password_change = "Worrell,ErnestP,$branchcode,$categorycode,Vern";
444
    my $defaults = { cardnumber => "" }; #currently all the defaults come as "" if not filled
445
446
    #Make the test files for importing
447
    my $filename_1 = make_csv($temp_dir, $csv_headers, $csv_password);
448
    open(my $handle_1, "<", $filename_1) or die "cannot open < $filename_1: $!";
449
    my $params_1 = { file => $handle_1, matchpoint => 'userid', overwrite_passwords => 1, overwrite_cardnumber => 1};
450
    my $filename_2 = make_csv($temp_dir, $csv_headers, $csv_password_change);
451
    open(my $handle_2, "<", $filename_2) or die "cannot open < $filename_2: $!";
452
    my $params_2 = { file => $handle_2, matchpoint => 'userid', overwrite_passwords => 1, overwrite_cardnumber => 1};
453
454
455
    my $result = $patrons_import->import_patrons($params_1, $defaults);
456
    like($result->{feedback}->[1]->{value}, qr/^Worrell \/ \d+/, 'First borrower imported as expected');
457
    $ernest = Koha::Patrons->find({ userid => 'ErnestP' });
458
    isnt($ernest->password,'Ernest',"New patron is imported, password is encrypted");
459
460
    #Save info to double check
461
    my $orig_pass = $ernest->password;
462
463
    $result = $patrons_import->import_patrons($params_2, $defaults);
464
    $ernest = Koha::Patrons->find({ userid => 'ErnestP' });
465
    isnt($ernest->password,$orig_pass,"New patron is overwritten, password is overwritten");
466
    isnt($ernest->password,'Vern',"Password is overwritten and is encrypted from value provided");
467
468
};
469
431
470
432
subtest 'test_prepare_columns' => sub {
471
subtest 'test_prepare_columns' => sub {
433
    plan tests => 16;
472
    plan tests => 16;
(-)a/tools/import_borrowers.pl (-1 / +1 lines)
Lines 126-131 if ( $uploadborrowers && length($uploadborrowers) > 0 ) { Link Here
126
            defaults                     => \%defaults,
126
            defaults                     => \%defaults,
127
            matchpoint                   => $matchpoint,
127
            matchpoint                   => $matchpoint,
128
            overwrite_cardnumber         => $input->param('overwrite_cardnumber'),
128
            overwrite_cardnumber         => $input->param('overwrite_cardnumber'),
129
            overwrite_passwords          => $input->param('overwrite_passwords'),
129
            preserve_extended_attributes => $input->param('ext_preserve') || 0,
130
            preserve_extended_attributes => $input->param('ext_preserve') || 0,
130
        }
131
        }
131
    );
132
    );
132
- 

Return to bug 23473