From 2deda3fd815cb4a8cfc46a7ffc5c32939802bd63 Mon Sep 17 00:00:00 2001 From: Christophe Massin Date: Wed, 16 Jul 2014 15:48:46 +0200 Subject: [PATCH] ldap user for test connection --- model/LdapAdapter.php | 17 ++- model/LdapUser.php | 283 ++++++++++++++++++++++++++++++++++++++ model/LdapUserService.php | 98 +++++++++++++ 3 files changed, 389 insertions(+), 9 deletions(-) create mode 100644 model/LdapUser.php create mode 100644 model/LdapUserService.php diff --git a/model/LdapAdapter.php b/model/LdapAdapter.php index 9824fa9..5b4d050 100644 --- a/model/LdapAdapter.php +++ b/model/LdapAdapter.php @@ -84,18 +84,17 @@ class LdapAdapter implements LoginAdapter $adapter->setPassword($this->getPassword()); - $identity = $adapter->authenticate(); -$params=array(); + if($adapter->authenticate()){ + $result = $adapter->getAccountObject(); + $params = get_object_vars($result); + + $user = new LdapUser(); - if($identity){ - $user = new AuthKeyValueUser(); $user->setConfiguration($this->getConfiguration()); - $user->setIdentifier($params['uri']); - $user->setRoles($params[PROPERTY_USER_ROLES]); - $user->setLanguageUi($params[PROPERTY_USER_UILG]); - $user->setLanguageDefLg($params[PROPERTY_USER_DEFLG]); - $user->setUserRawParameters($params); + $user->setRoles(array('http://www.tao.lu/Ontologies/TAO.rdf#DeliveryRole')); + $user->setLanguageUi($params['preferredlanguage']); + $user->setLanguageDefLg($params['preferredlanguage']); return $user; diff --git a/model/LdapUser.php b/model/LdapUser.php new file mode 100644 index 0000000..4e40de4 --- /dev/null +++ b/model/LdapUser.php @@ -0,0 +1,283 @@ +configuration = $configuration; + } + + /** + * @return array + */ + public function getConfiguration() + { + return $this->configuration; + } + + + /** + * Sets the language URI + * + * @param string $languageDefLgUri + */ + public function setLanguageDefLg($languageDefLgUri) + { + $languageResource = new core_kernel_classes_Resource($languageDefLgUri); + + $languageCode = $languageResource->getUniquePropertyValue(new core_kernel_classes_Property(RDF_VALUE)); + if($languageCode) { + $this->languageDefLg = array((string)$languageCode); + } + + return $this; + } + + /** + * Returns the language code + * + * @return array + */ + public function getLanguageDefLg() + { + return $this->languageDefLg; + } + + /** + * @param array $userExtraParameters + */ + public function setUserExtraParameters(array $userExtraParameters) + { + $this->userExtraParameters = $userExtraParameters; + } + + /** + * @return array + */ + public function getUserExtraParameters() + { + return $this->userExtraParameters; + } + + + + /** + * @param rray $userRawParameters + * @return AuthKeyValueUser + */ + public function setUserRawParameters(array $userRawParameters) + { + $this->userRawParameters = $userRawParameters; + + return $this; + } + + /** + * @return array + */ + public function getUserRawParameters() + { + return $this->userRawParameters; + } + + + /** + * @param mixed $language + */ + public function setLanguageUi($languageUri) + { + $languageResource = new core_kernel_classes_Resource($languageUri); + + $languageCode = $languageResource->getUniquePropertyValue(new core_kernel_classes_Property(RDF_VALUE)); + if($languageCode) { + $this->languageUi = array((string)$languageCode); + } + + return $this; + } + + /** + * @return array + */ + public function getLanguageUi() + { + return $this->languageUi; + } + + + /** + * @return string + */ + public function getIdentifier(){ + return $this->identifier; + } + + /** + * @param $identifier + * @return $this + */ + public function setIdentifier($identifier){ + $this->identifier = $identifier; + + return $this; + } + + + /** + * @param $property string + * @return array|null + */ + public function getPropertyValues($property) + { + $returnValue = null; + + $userParameters = $this->getUserRawParameters(); + + if( !empty($userParameters) && array_key_exists($property, $userParameters)) + { + switch ($property) { + case PROPERTY_USER_DEFLG : + $returnValue = $this->getLanguageDefLg(); + break; + case PROPERTY_USER_UILG : + $returnValue = $this->getLanguageUi(); + break; + case PROPERTY_USER_ROLES : + $returnValue = $this->getRoles(); + break; + default: + $returnValue = array($userParameters[$property]); + } + } else { + $extraParameters = $this->getUserExtraParameters(); + // the element has already been accessed + if(!empty($extraParameters) && array_key_exists($property, $extraParameters)){ + if(!is_array($extraParameters[$property])){ + $returnValue = array($extraParameters[$property]); + } else { + $returnValue = $extraParameters[$property]; + } + + } else { + // not already accessed, we are going to get it. + $serviceUser = new AuthKeyValueUserService(); + $parameter = $serviceUser->getUserParameter($userParameters[PROPERTY_USER_LOGIN], $property); + + $config = $this->getConfiguration(); + if(isset($config['max_size_cached_element'])){ + if( strlen(base64_encode(serialize($parameter))) < $config['max_size_cached_element'] ) { + $extraParameters[$property] = $parameter; + $this->setUserExtraParameters($extraParameters); + } + } else { + throw new Exception('Missing configuration element max_sized_cached_element'); + } + + + $returnValue = array($parameter); + } + + } + + return $returnValue; + } + + + /** + * Function that will refresh the parameters. + */ + public function refresh() { + } + + + /** + * @return array + */ + public function getRoles() { + return $this->roles; + } + + /** + * @param array $roles + * @return $this + */ + public function setRoles(array $roles ) { + $this->roles = $roles; + + return $this; + } + +} diff --git a/model/LdapUserService.php b/model/LdapUserService.php new file mode 100644 index 0000000..64ff9d8 --- /dev/null +++ b/model/LdapUserService.php @@ -0,0 +1,98 @@ +driver = $kvStore->getDriver(); + } + + + /** + * @param $login + * @return mixed + */ + public function getUserData($login){ + return $this->driver->hGetAll(AuthKeyValueUserService::PREFIXES_KEY.':'.$login); + } + + + /** + * @param $userLogin string + * @param $parameter string + * @return mixed + */ + public function getUserParameter($userLogin, $parameter){ + return $this->driver->get(AuthKeyValueUserService::PREFIXES_KEY.':'.$userLogin.':'.$parameter); + } + + /** + * @param $userLogin string user login + * @param $parameter string parameter + * @param $value mixed + */ + public function addUserParameter($userLogin, $parameter, $value){ + $this->driver->set(AuthKeyValueUserService::PREFIXES_KEY.':'.$userLogin.':'.$parameter, $value); + } + + + /** + * @param $userLogin string + * @param $parameter string + */ + public function deleteUserParameter($userLogin, $parameter){ + $this->driver->del(AuthKeyValueUserService::PREFIXES_KEY.':'.$userLogin.':'.$parameter); + } + + + /** + * @param $userLogin + * @param $parameter + * @param $value + */ + public function editUserParameter($userLogin, $parameter, $value){ + $this->driver->set(AuthKeyValueUserService::PREFIXES_KEY.':'.$userLogin.':'.$parameter, $value); + } +} \ No newline at end of file