Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
 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();
 }
Esempio n. 4
0
 /**
  * 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;
 }
Esempio n. 5
0
 /**
  * @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'));
 }