Bug 23473: (follow-up) Catch and show password exceptions
authorNick Clemens <nick@bywatersolutions.com>
Tue, 5 Nov 2019 12:58:45 +0000 (12:58 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 27 Mar 2020 12:23:04 +0000 (12:23 +0000)
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Koha/Patrons/Import.pm
koha-tmpl/intranet-tmpl/prog/en/modules/tools/import_borrowers.tt

index ed1e68d..06a411e 100644 (file)
@@ -22,6 +22,7 @@ use namespace::clean;
 use Carp;
 use Text::CSV;
 use Encode qw( decode_utf8 );
+use Try::Tiny;
 
 use C4::Members;
 
@@ -303,7 +304,26 @@ sub import_patrons {
                 }
             }
             if ($overwrite_passwords){
-                $patron->set_password({ password => $borrower{password} });
+                try {
+                    $patron->set_password({ password => $borrower{password} });
+                }
+                catch {
+                    if ( $_->isa('Koha::Exceptions::Password::TooShort') ) {
+                        push @errors, { passwd_too_short => 1, borrowernumber => $borrowernumber, length => $_->{length}, min_length => $_->{min_length} };
+                    }
+                    elsif ( $_->isa('Koha::Exceptions::Password::WhitespaceCharacters') ) {
+                        push @errors, { passwd_whitespace => 1, borrowernumber => $borrowernumber } ;
+                    }
+                    elsif ( $_->isa('Koha::Exceptions::Password::TooWeak') ) {
+                        push @errors, { passwd_too_weak => 1, borrowernumber => $borrowernumber } ;
+                    }
+                    elsif ( $_->isa('Koha::Exceptions::Password::Plugin') ) {
+                        push @errors, { passwd_plugin_err => 1, borrowernumber => $borrowernumber } ;
+                    }
+                    else {
+                        push @errors, { passwd_unknown_err => 1, borrowernumber => $borrowernumber } ;
+                    }
+                }
             }
             if ($extended) {
                 if ($ext_preserve) {
index e7c4631..70fe717 100644 (file)
                             Userid [% e.userid | html %] is already used by another patron.
                         </li>
                     [% END %]
+                    [% IF e.passwd_too_short %]
+                        <li class="line_error">
+                            Password is too short for patron with borrowernumber [% e.borrowernumber | html %]. Minimum length is [% e.min_length %], length is [% e.length %]
+                        </li>
+                    [% END %]
+                    [% IF e.passwd_whitespace %]
+                        <li class="line_error">
+                            Password contains whitespace for patron with borrowernumber [% e.borrowernumber | html %].
+                        </li>
+                    [% END %]
+                    [% IF e.passwd_too_weak %]
+                        <li class="line_error">
+                            Password is too weak for patron with borrowernumber [% e.borrowernumber | html %].
+                        </li>
+                    [% END %]
+                    [% IF e.passwd_plugin_err %]
+                        <li class="line_error">
+                            Password plugin error for patron with borrowernumber [% e.borrowernumber | html %].
+                        </li>
+                    [% END %]
+                    [% IF e.passwd_unknown_err %]
+                        <li class="line_error">
+                            Password error for patron with borrowernumber [% e.borrowernumber | html %].
+                        </li>
+                    [% END %]
                 [% END %]
             </ul>
         </div>