diff --git a/include/password-methods/class_password-methods-clear.inc b/include/password-methods/class_password-methods-clear.inc index d3d1ef3e3814ce1224a211f69764132e0f14275c..2f21f22eac1a5dc1f9ed8b57b9d7742c7a657d7c 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 11719942c4936ff575018c450459d12de21d63d7..efbf1a11905066500def07677f54c7132003cd42 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 84837ebe2aa0c7b627313a3dee12253a5abbd5d2..72df50b8f14a79eab49da9c56ae94dd0d21e778d 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); } } }