From bd51bfd369bebd5ab3fe35836ff26c516804dfa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come@opensides.be> Date: Tue, 13 Mar 2018 15:19:19 +0100 Subject: [PATCH] :ambulance: fix(users) Fix error message when account locking fails issue #5788 --- .../class_password-methods-clear.inc | 2 +- .../password-methods/class_password-methods.inc | 16 +++++++++++++--- plugins/admin/users/class_userManagement.inc | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/include/password-methods/class_password-methods-clear.inc b/include/password-methods/class_password-methods-clear.inc index d3d1ef3e3..2f21f22ea 100644 --- a/include/password-methods/class_password-methods-clear.inc +++ b/include/password-methods/class_password-methods-clear.inc @@ -31,7 +31,7 @@ */ class passwordMethodClear extends passwordMethod { - var $lockable = FALSE; + protected $lockable = FALSE; /*! * \brief passwordMethodClear Constructor diff --git a/include/password-methods/class_password-methods.inc b/include/password-methods/class_password-methods.inc index 11719942c..efbf1a119 100644 --- a/include/password-methods/class_password-methods.inc +++ b/include/password-methods/class_password-methods.inc @@ -32,7 +32,8 @@ class passwordMethod var $attrs = array(); var $display = FALSE; var $hash = ''; - var $lockable = TRUE; + + protected $lockable = TRUE; /*! * \brief Password method contructor @@ -62,6 +63,16 @@ class passwordMethod return TRUE; } + /*! + * \brief If we can lock the password + * + * \return boolean + */ + function is_lockable() + { + return $this->lockable; + } + /*! * \brief Is locked * @@ -123,7 +134,7 @@ class passwordMethod return FALSE; } if ($mode != 'LOCK' && $mode != 'UNLOCK') { - die('Invalid mode "'.$mode.'"'); + throw new FusionDirectoryException('Invalid mode "'.$mode.'"'); } /* Get current password hash */ @@ -142,7 +153,6 @@ class passwordMethod /* We can only lock/unlock non-empty passwords */ if (!empty($pwd)) { - /* Check if this entry is already locked. */ if (!preg_match("/^[^\}]*+\}!/", $pwd)) { if ($mode == 'UNLOCK') { diff --git a/plugins/admin/users/class_userManagement.inc b/plugins/admin/users/class_userManagement.inc index 84837ebe2..72df50b8f 100644 --- a/plugins/admin/users/class_userManagement.inc +++ b/plugins/admin/users/class_userManagement.inc @@ -170,6 +170,16 @@ class userManagement extends simpleManagement $method = passwordMethod::get_method($pwd, $val['dn']); $success = TRUE; if ($method instanceOf passwordMethod) { + if (!$method->is_lockable()) { + $hn = $method->get_hash_name(); + if (is_array($hn)) { + $hn = $hn[0]; + } + msg_dialog::display(_('Account locking'), + sprintf(_('Password method "%s" does not support locking. Account "%s" has not been locked!'), + $hn, $dn), ERROR_DIALOG); + return; + } if ($type == 'toggle') { if ($method->is_locked($val['dn'])) { $success = $method->unlock_account($val['dn']); @@ -189,8 +199,8 @@ class userManagement extends simpleManagement $hn = $hn[0]; } msg_dialog::display(_('Account locking'), - sprintf(_('Password method "%s" does not support locking. Account "%s" has not been locked!'), - $hn, $dn), WARNING_DIALOG); + sprintf(_('Locking failed using password method "%s". Account "%s" has not been locked!'), + $hn, $dn), ERROR_DIALOG); } } } -- GitLab