Пример #1
0
 /**
  * Override method: Setup needs additional initialisation
  * 
  * @see tine20/Setup/Setup_Initialize#_initialize($_application)
  */
 protected function _initialize(Tinebase_Model_Application $_application, $_options = null)
 {
     parent::_initialize($_application, $_options);
     $initialAdminUserOptions = $this->_parseInitialAdminUserOptions($_options);
     if (Tinebase_User::getInstance() instanceof Tinebase_User_Interface_SyncAble) {
         Tinebase_User::syncUsers(true);
     } else {
         Tinebase_User::createInitialAccounts($initialAdminUserOptions);
     }
     // set current user
     $initialUser = Tinebase_User::getInstance()->getUserByProperty('accountLoginName', $initialAdminUserOptions['adminLoginName']);
     Tinebase_Core::set(Tinebase_Core::USER, $initialUser);
     parent::_initialize($_application, $_options);
 }
 /**
  * Override method: Setup needs additional initialisation
  * 
  * @see tine20/Setup/Setup_Initialize#_initialize($_application)
  */
 protected function _initialize(Tinebase_Model_Application $_application, $_options = null)
 {
     $initialAdminUserOptions = $this->_parseInitialAdminUserOptions($_options);
     if (Tinebase_User::getInstance() instanceof Tinebase_User_Interface_SyncAble) {
         Tinebase_User::syncUsers(array('syncContactData' => TRUE));
     }
     try {
         $initialUser = Tinebase_User::getInstance()->getUserByProperty('accountLoginName', $initialAdminUserOptions['adminLoginName']);
     } catch (Tinebase_Exception_NotFound $tenf) {
         if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) {
             Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . ' Could not find initial admin account in user backend. Creating new one ...');
         }
         Tinebase_User::createInitialAccounts($initialAdminUserOptions);
         $initialUser = Tinebase_User::getInstance()->getUserByProperty('accountLoginName', $initialAdminUserOptions['adminLoginName']);
     }
     Tinebase_Core::set(Tinebase_Core::USER, $initialUser);
     parent::_initialize($_application, $_options);
 }
 /**
  * @see 0009852: improve cache cleaning after LDAP sync
  */
 public function testSyncGroups()
 {
     $defaultUserGroup = Tinebase_Group::getInstance()->getDefaultGroup();
     $group = $this->testAddGroup();
     $user = $this->_addUserToGroup($group);
     // add user to group (only in LDAP)
     $this->_groupLDAP->addGroupMemberInSyncBackend($defaultUserGroup->getId(), $user);
     // trigger caching
     $memberships = $this->_groupLDAP->getGroupMembers($defaultUserGroup);
     $this->assertFalse(in_array($user->getId(), $memberships));
     // sync users
     Tinebase_User::syncUsers(array('syncContactData' => TRUE));
     // check group memberships
     $memberships = $this->_groupLDAP->getGroupMembers($defaultUserGroup);
     $this->assertTrue(in_array($user->getId(), $memberships), 'group memberships not updated: ' . print_r($memberships, true));
 }
 /**
  * @see 0011192: LDAP sync should delete contacts
  */
 public function testSyncDeleted()
 {
     $user = $this->testAddUser();
     // add user contact
     $contact = Admin_Controller_User::getInstance()->createOrUpdateContact($user);
     $user->contact_id = $contact->getId();
     Tinebase_User::getInstance()->updateUser($user);
     // delete user in ldap
     Tinebase_User::getInstance()->deleteUserInSyncBackend($user->getId());
     // check if still in tine20 db
     $sqlUser = Tinebase_User::getInstance()->getUserByPropertyFromSqlBackend('accountId', $user->getId());
     $this->assertEquals($user->getId(), $sqlUser->getId());
     // set sync config/option + start user sync
     $syncOptions = array('deleteUsers' => true);
     Tinebase_User::syncUsers($syncOptions);
     $now = Tinebase_DateTime::now();
     $user = Tinebase_User::getInstance()->getUserByPropertyFromSqlBackend('accountId', $user->getId(), 'Tinebase_Model_FullUser');
     $this->assertTrue($now->isLaterOrEquals($user->accountExpires), 'user should be expired');
     sleep(1);
     Tinebase_User::syncUsers($syncOptions);
     $user = Tinebase_User::getInstance()->getUserByPropertyFromSqlBackend('accountId', $user->getId(), 'Tinebase_Model_FullUser');
     $this->assertTrue($now->toString() == $user->accountExpires->toString() || $now->subSecond(1)->toString() == $user->accountExpires->toString(), 'expiry date should still be the same');
     // set expired to -1 year -> user should be deleted
     $user->accountExpires = $now->subYear(1);
     Tinebase_User::getInstance()->updateUserInSqlBackend($user);
     // sync again
     sleep(1);
     Tinebase_User::syncUsers($syncOptions);
     // check if user is deleted in tine, too
     try {
         Tinebase_User::getInstance()->getUserByPropertyFromSqlBackend('accountId', $user->getId());
         $this->fail('user should be deleted from tine20 db');
     } catch (Tinebase_Exception_NotFound $tenf) {
         $this->assertContains('User with accountId = ' . $sqlUser->getId(), $tenf->getMessage());
     }
     // check if user contact is deleted, too
     try {
         Addressbook_Controller_Contact::getInstance()->get($sqlUser->contact_id);
         $this->fail('user contact should be deleted from tine20 db');
     } catch (Tinebase_Exception_NotFound $tenf) {
         $this->assertContains('Addressbook_Model_Contact record with id = ' . $sqlUser->contact_id, $tenf->getMessage());
     }
 }
 /**
  * migrate from SQL account storage to another one (for example LDAP)
  * - deletes all users, groups and roles because they will be
  *   imported from new accounts storage backend
  */
 protected function _migrateFromSqlAccountsStorage()
 {
     Setup_Core::getLogger()->info(__METHOD__ . '::' . __LINE__ . ' Deleting all user accounts, groups, roles and rights');
     Tinebase_User::factory(Tinebase_User::SQL)->deleteAllUsers();
     $contactSQLBackend = new Addressbook_Backend_Sql();
     $allUserContactIds = $contactSQLBackend->search(new Addressbook_Model_ContactFilter(array('type' => 'user')), null, true);
     if (count($allUserContactIds) > 0) {
         $contactSQLBackend->delete($allUserContactIds);
     }
     Tinebase_Group::factory(Tinebase_Group::SQL)->deleteAllGroups();
     $listsSQLBackend = new Addressbook_Backend_List();
     $allGroupListIds = $listsSQLBackend->search(new Addressbook_Model_ListFilter(array('type' => 'group')), null, true);
     if (count($allGroupListIds) > 0) {
         $listsSQLBackend->delete($allGroupListIds);
     }
     $roles = Tinebase_Acl_Roles::getInstance();
     $roles->deleteAllRoles();
     // import users (from new backend) / create initial users (SQL)
     Tinebase_User::syncUsers(array('syncContactData' => TRUE));
     $roles->createInitialRoles();
     $applications = Tinebase_Application::getInstance()->getApplications(NULL, 'id');
     foreach ($applications as $application) {
         Setup_Initialize::initializeApplicationRights($application);
     }
 }
 /**
  * import accounts from ldap
  *
  * @param Zend_Console_Getopt $_opts
  */
 protected function _importAccounts(Zend_Console_Getopt $_opts)
 {
     // disable timelimit during import of user accounts
     Setup_Core::setExecutionLifeTime(0);
     // import groups
     if (!$_opts->onlyusers) {
         Tinebase_Group::syncGroups();
     }
     // import users
     $options = array('syncContactData' => TRUE);
     if ($_opts->dbmailldap) {
         $options['ldapplugins'] = array(new Tinebase_EmailUser_Imap_LdapDbmailSchema(), new Tinebase_EmailUser_Smtp_LdapDbmailSchema());
     }
     if ($_opts->syncdeletedusers) {
         $options['deleteUsers'] = true;
     }
     Tinebase_User::syncUsers($options);
 }
Пример #7
0
 /**
  * import accounts from ldap
  *
  * @param Zend_Console_Getopt $_opts
  */
 protected function _importAccounts(Zend_Console_Getopt $_opts)
 {
     // disable timelimit during import of user accounts
     Setup_Core::setExecutionLifeTime(0);
     // import groups
     Tinebase_Group::syncGroups();
     // import users
     Tinebase_User::syncUsers(true);
 }
 /**
  * @see 0011192: LDAP sync should delete contacts
  */
 public function testSyncDeleted()
 {
     $user = $this->testAddUser();
     // delete user in ldap
     Tinebase_User::getInstance()->deleteUserInSyncBackend($user->getId());
     // check if still in tine20 db
     $sqlUser = Tinebase_User::getInstance()->getUserByPropertyFromSqlBackend('accountId', $user->getId());
     $this->assertEquals($user->getId(), $sqlUser->getId());
     // set sync config/option + start user sync
     $syncOptions = array('deleteUsers' => true);
     Tinebase_User::syncUsers($syncOptions);
     // check if user is deleted in tine, too
     try {
         Tinebase_User::getInstance()->getUserByPropertyFromSqlBackend('accountId', $user->getId());
         $this->fail('user should be deleted from tine20 db');
     } catch (Tinebase_Exception_NotFound $tenf) {
         $this->assertContains('User with accountId = ' . $sqlUser->getId(), $tenf->getMessage());
     }
 }