示例#1
0
 /**
  * @test
  */
 public function searchGroupsReturnsExactlyOneResult()
 {
     $baseDn = 'cn=read-only-admin,dc=example,dc=com';
     $filter = '(ou=*)';
     $groups = $this->fixture->search($baseDn, $filter, array(), TRUE);
     $this->assertEquals('ou=mathematicians,dc=example,dc=com', $groups['dn']);
 }
示例#2
0
 /**
  * Actual import of user groups using AJAX.
  *
  * @param \Causal\IgLdapSsoAuth\Domain\Model\Configuration $configuration
  * @param string $mode
  * @param string $dn
  * @return void
  */
 public function importUserGroupsAjaxAction(\Causal\IgLdapSsoAuth\Domain\Model\Configuration $configuration = NULL, $mode, $dn)
 {
     $data = array();
     Configuration::initialize($mode, $configuration);
     $config = $mode === 'be' ? Configuration::getBackendConfiguration() : Configuration::getFrontendConfiguration();
     try {
         $success = $this->ldap->connect(Configuration::getLdapConfiguration());
     } catch (\Exception $e) {
         $data['message'] = $e->getMessage();
         $success = FALSE;
     }
     if ($success) {
         list($filter, $baseDn) = explode(',', $dn, 2);
         $ldapGroup = $this->ldap->search($baseDn, '(' . $filter . ')', array(), TRUE);
         $pid = Configuration::getPid($config['groups']['mapping']);
         $table = $mode === 'be' ? 'be_groups' : 'fe_groups';
         $typo3Groups = Authentication::getTypo3Groups(array($ldapGroup), $table, $pid);
         // Merge LDAP and TYPO3 information
         $group = Authentication::merge($ldapGroup, $typo3Groups[0], $config['groups']['mapping']);
         if ((int) $group['uid'] === 0) {
             $group = Typo3GroupRepository::add($table, $group);
         } else {
             // Restore group that may have been previously deleted
             $group['deleted'] = 0;
             $success = Typo3GroupRepository::update($table, $group);
         }
         if (!empty($config['groups']['mapping']['parentGroup'])) {
             $fieldParent = $config['groups']['mapping']['parentGroup'];
             if (preg_match("`<([^\$]*)>`", $fieldParent, $attribute)) {
                 $fieldParent = $attribute[1];
                 if (is_array($group[$fieldParent])) {
                     unset($group[$fieldParent]['count']);
                     $this->setParentGroup($group[$fieldParent], $fieldParent, $group['uid'], $pid, $mode);
                 }
             }
         }
         $data['id'] = (int) $group['uid'];
     }
     $this->returnAjax(array_merge($data, array('success' => $success)));
 }