Bug 21233: Add Koha::Exceptions::Password
authorTomas Cohen Arazi <tomascohen@theke.io>
Thu, 16 Aug 2018 09:56:30 +0000 (06:56 -0300)
committerNick Clemens <nick@bywatersolutions.com>
Fri, 14 Sep 2018 17:54:12 +0000 (17:54 +0000)
This patch adds some exceptions that we need. To test:

- Apply this patch
- Run:
  $ kshell
 k$ prove t/Koha/Exceptions.t
=> SUCCESS: Tests pass!
- Sign off! :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Koha/Exceptions/Password.pm [new file with mode: 0644]

diff --git a/Koha/Exceptions/Password.pm b/Koha/Exceptions/Password.pm
new file mode 100644 (file)
index 0000000..bffafdb
--- /dev/null
@@ -0,0 +1,92 @@
+package Koha::Exceptions::Password;
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Exception::Class (
+
+    'Koha::Exceptions::Password' => {
+        description => 'Something went wrong!',
+    },
+    'Koha::Exceptions::Password::Invalid' => {
+        isa => 'Koha::Exceptions::Password',
+        description => 'Invalid password'
+    },
+    'Koha::Exceptions::Password::TooShort' => {
+        isa => 'Koha::Exceptions::Password',
+        description => 'Password is too short',
+        fields => ['length','min_length']
+    },
+    'Koha::Exceptions::Password::TooWeak' => {
+        isa => 'Koha::Exceptions::Password',
+        description => 'Password is too weak'
+    },
+    'Koha::Exceptions::Password::TrailingWhitespaces' => {
+        isa => 'Koha::Exceptions::Password',
+        description => 'Password contains trailing whitespace(s)'
+    }
+);
+
+sub full_message {
+    my $self = shift;
+
+    my $msg = $self->message;
+
+    unless ( $msg) {
+        if ( $self->isa('Koha::Exceptions::Password::TooShort') ) {
+            $msg = sprintf("Password length (%s) is shorter than required (%s)", $self->length, $self->min_length );
+        }
+    }
+
+    return $msg;
+}
+
+=head1 NAME
+
+Koha::Exceptions::Password - Base class for password exceptions
+
+=head1 Exceptions
+
+=head2 Koha::Exceptions::Password
+
+Generic password exception
+
+=head2 Koha::Exceptions::Password::Invalid
+
+The supplied password is invalid.
+
+=head2 Koha::Exceptions::Password::TooShort
+
+Password is too short.
+
+=head2 Koha::Exceptions::Password::TooWeak
+
+Password is too weak.
+
+=head2 Koha::Exceptions::Password::TrailingWhitespaces
+
+Password contains trailing spaces, which is forbidden.
+
+=head1 Class methods
+
+=head2 full_message
+
+Overloaded method for exception stringifying.
+
+=cut
+
+1;