public static function create_user($login = false) { $person = new midcom_db_person(); $person->_use_rcs = false; $person->_use_activitystream = false; $password = substr('p_' . time(), 0, 11); $username = __CLASS__ . ' user ' . microtime(); midcom::get('auth')->request_sudo('midcom.core'); if (!$person->create()) { throw new Exception('Person could not be created. Reason: ' . midcom_connection::get_error_string()); } $account = midcom_core_account::get($person); $account->set_password($password); $account->set_username($username); $account->save(); midcom::get('auth')->drop_sudo(); if ($login) { if (!midcom::get('auth')->login($username, $password)) { throw new Exception('Login for user ' . $username . ' failed'); } midcom::get('auth')->_sync_user_with_backend(); } self::$_class_objects[$person->guid] = $person; return $person; }
public static function setUpBeforeClass() { self::$_person = self::create_class_object('midcom_db_person'); self::$_password = substr('p_' . time(), 0, 11); self::$_username = __CLASS__ . ' user ' . time(); midcom::get('auth')->request_sudo('midcom.core'); $account = midcom_core_account::get(self::$_person); $account->set_password(self::$_password); $account->set_username(self::$_username); $account->save(); midcom::get('auth')->drop_sudo(); }
public function testNameUnique() { midcom::get('auth')->request_sudo('midcom.core'); $account1 = midcom_core_account::get(self::$_person); $username = __CLASS__ . ' user ' . time(); $account1->set_username($username); $account1->save(); $this->assertEquals($username, $account1->get_username()); $person = $this->create_object('midcom_db_person'); $account2 = midcom_core_account::get($person); $password = '******' . time(); $account2->set_password($password); $account2->set_username($username); $stat = $account2->save(); $this->assertFalse($stat); midcom::get('auth')->drop_sudo(); }
/** * Sets username and password for person * * @param string $username Contains username * @param string $new_password Contains the new password to set */ public function set_account($username, $new_password) { $this->_account = midcom_core_account::get($this->_person); if (!empty($new_password)) { $new_password_encrypted = midcom_connection::prepare_password($new_password); //check if the new encrypted password was already used if ($this->check_password_reuse($new_password_encrypted) && $this->check_password_strength($new_password)) { $this->_save_old_password(); $this->_account->set_password($new_password); } else { $this->errstr = "password strength too low"; return false; } } $this->_account->set_username($username); //probably username not unique if (!$this->_account->save()) { $this->errstr = "Failed to save account"; return false; } if (!empty($new_password)) { //add timestamp of password-change $this->_person->set_parameter("org_openpsa_user_password", "last_change", time()); } //sets privilege midcom::get('auth')->request_sudo($this->_component); $this->_person->set_privilege('midgard:owner', "user:" . $this->_person->guid); midcom::get('auth')->drop_sudo(); return true; }
/** * @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')); }