/** * Load thumbnail and save it's base64 in userdata * @param Manager $ldap * @param array $userData * @return string|false */ public static function getThumbnail(Manager $ldap, array $userData) { $raw = $ldap->search(null, Utils::getUserLookup($userData['username']), true, array('thumbnailphoto')); if (!$raw->current() instanceof Node) { return false; } /** @var NodeAttribute[] $attrs */ $attrs = $raw->current()->getAttributes(); // Load user image if (empty($attrs['thumbnailPhoto']) !== true && $attrs['thumbnailPhoto']->getValues()) { $img = $attrs['thumbnailPhoto']->getValues(); return 'data:image/jpg' . ';base64,' . base64_encode($img[0]); } return false; }
/** * Load data as per constructor instance * * @param Manager $ldap * @param array $userData * @return array */ public function getUserInfo(Manager $ldap, array $userData) { // Load $raw = $ldap->search(NULL, Utils::getUserLookup($userData['username']), TRUE, array_keys($this->loadInfo)); if (!$raw->current() instanceof Node) { return array(); } $attributes = $raw->current()->getAttributes(); // Post process & return $return = array(); foreach ($attributes as $key => $value) { /** @var NodeAttribute $value */ $newKey = $this->loadInfo[$key]; if ($key == 'objectSid') { $return[$newKey] = array($this->getObjectSidFromBinary($value->getValues()[0])); } else { $return[$newKey] = $value->getValues(); } if (count($return[$newKey]) === 1) { $return[$newKey] = reset($return[$newKey]); } } return $return; }
/** * @param Manager $ldap * @param $groupDn * @return Node[]|false */ protected function getGroupMemberOf(Manager $ldap, $groupDn) { return $ldap->search(null, str_replace(':group:', ldap_escape($groupDn, null, LDAP_ESCAPE_DN), self::$GroupMemberOfLookup)); }