/** * @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']); }
/** * 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))); }