public function addDcIfNotExist($dn, $name) { if (!$this->ldap->isEntityExist($dn)) { $data = array(); $data['dc'] = $name; $data['o'] = $name; $data['objectclass'] = array('top', 'organization', 'dcObject'); $this->ldap->add($dn, $data); $this->logger->info("Created Dc:'" . $dn . "''"); } }
public function update(User $user) { $errors = $this->validator->validate($user); if (count($errors) > 0) { throw new InvalidArgumentException((string) $errors); } // rehash changed passwords if ($user->getPasswordObject()->getPasswordPlain() !== null) { $this->encodePassword($user->getEncoder(), $user->getPasswordObject()); } // validate ldap schemas foreach ($user->getObjects() as $object) { $errors = $this->validator->validate($object); if (count($errors) > 0) { throw new InvalidArgumentException($this->getUsername() . '(User):' . (string) $errors); } } $transformer = new LdapArrayToObjectTransformer(null); $this->client->replace('uid=' . $user->getUsername() . ',ou=users,' . $this->baseDn, $transformer->transform($user)); foreach ($user->getServices() as $service) { $dn = 'uid=' . $user->getUsername() . ',ou=users,dc=' . $service->getName() . ',' . $this->baseDn; if ($service->isEnabled()) { foreach ($service->getPasswords() as $password) { if ($password->getPasswordPlain() !== null) { $this->encodePassword($service->getEncoder(), $password); } } // validate ldap schemas foreach ($service->getObjects() as $object) { $errors = $this->validator->validate($object); if (count($errors) > 0) { throw new InvalidArgumentException($service->getName() . "(Service): " . (string) $errors); } } if ($this->client->isEntityExist($dn)) { $this->client->replace($dn, $transformer->transform($service)); } else { $this->client->add($dn, $transformer->transform($service)); } //add groups foreach ($service->getGroups() as $group) { $dnGroup = 'uid=' . $user->getUsername() . ',ou=groups,dc=' . $service->getName() . ',' . $this->baseDn; $errors = $this->validator->validate($group); if (count($errors) > 0) { throw new InvalidArgumentException($group->getName() . "(Group): " . (string) $errors); } if ($group->isEnabled()) { if ($this->client->isEntityExist($dnGroup)) { $this->client->replace($dnGroup, $transformer->transform($service)); } else { $this->client->add($dnGroup, $transformer->transform($service)); } } else { if ($this->client->isEntityExist($dnGroup)) { $this->client->delete($dnGroup); } } } } else { // !$service->isEnabled() if ($this->client->isEntityExist($dn)) { $this->client->delete($dn); } } } }