private function _update_account($fields) { $stat = false; $password = null; //new password? if (!empty($fields["new_password"]->value)) { $password = $fields["new_password"]->value; } $accounthelper = new org_openpsa_user_accounthelper($this->_person); // Update account $stat = $accounthelper->set_account($fields["username"]->value, $password); if (!$stat && midcom_connection::get_error() != MGD_ERR_OK) { // Failure, give a message midcom::get('uimessages')->add($this->_l10n->get('org.openpsa.user'), $this->_l10n->get("failed to update the user account, reason") . ': ' . midcom_connection::get_error_string(), 'error'); } return $stat; }
/** * @depends testCheck_password_strength * @depends testCheck_password_reuse * @depends testGenerate_safe_password */ public function testSet_account() { $accounthelper = new org_openpsa_user_accounthelper(self::$_user); $account = midcom_core_account::get(self::$_user); $password = $account->get_password(); $username = $account->get_username(); midcom::get('auth')->request_sudo('org.openpsa.user'); self::$_user->delete_parameter('org_openpsa_user_password', 'old_passwords'); self::$_user->delete_parameter('org_openpsa_user_password', 'last_change'); do { $new_password = $accounthelper->generate_safe_password(); } while ($password === $new_password); $new_username = $username . time(); $this->assertTrue($accounthelper->set_account($new_username, $new_password)); midcom::get('auth')->drop_sudo(); $this->assertEquals(midcom_connection::prepare_password($new_password), $account->get_password()); $this->assertEquals($new_username, $account->get_username()); $this->assertFalse(is_null(self::$_user->get_parameter('org_openpsa_user_password', 'last_change'))); $this->assertEquals(serialize(array($password)), self::$_user->get_parameter('org_openpsa_user_password', 'old_passwords')); }