<?php /** * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; under version 2 * of the License (non-upgradable). * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Copyright (c) 2014 (original work) Open Assessment Technologies SA; * * */ /** * Authentication user for key value db access * * @author christophe massin * @package authLdap */ namespace oat\authLdap\model; use common_user_User; use core_kernel_classes_Resource; use core_kernel_classes_Property; use common_Logger; use SebastianBergmann\Exporter\Exception; class LdapUser extends common_user_User { /** @var array of configuration */ protected $configuration; /** * @var array */ protected $userRawParameters; /** * @var array */ protected $userExtraParameters = array(); /** * @var string */ protected $identifier; /** @var array $roles */ protected $roles; /** * Array that contains the language code as a single string * * @var array */ protected $languageUi = array(DEFAULT_LANG); /** * Array that contains the language code as a single string * * @var array */ protected $languageDefLg = array(DEFAULT_LANG); /** * The mapping of custom parameter from ldap to TAO property * * @var array */ protected $mapping; public function __construct(array $mapping = null){ $this->mapping = $mapping; } /** * @return array */ public function getMapping() { return $this->mapping; } /** * Sets the language URI * * @param string $languageDefLgUri */ public function setLanguageDefLg($languageDefLgUri) { $this->languageDefLg = array((string)$languageDefLgUri); return $this; } /** * Returns the language code * * @return array */ public function getLanguageDefLg() { return $this->languageDefLg; } /** * @param $property string * @param $value string */ public function setUserParameter($property, $value){ $this->userRawParameters[$property] = $value; } public function getUserParameter($property) { if (isset ($this->userRawParameters[$property] ) ) return $this->userRawParameters[$property]; return null; } /** * @param array $params * @return AuthKeyValueUser */ public function setUserRawParameters(array $params) { $this->setRoles(array('http://www.tao.lu/Ontologies/TAO.rdf#DeliveryRole')); // initialize parameter that should be set isset($params['preferredlanguage']) ? $this->setLanguageUi($params['preferredlanguage']) : DEFAULT_LANG; isset($params['preferredlanguage']) ? $this->setLanguageDefLg($params['preferredlanguage']) : DEFAULT_LANG; isset($params['mail']) ? $this->setUserParameter(PROPERTY_USER_MAIL, $params['mail']) : ''; isset($params['displayname']) ? $this->setUserParameter(PROPERTY_USER_LASTNAME, $params['displayname']) : $this->setUserParameter(PROPERTY_USER_LASTNAME, $params['cn']) ; $mapping = $this->getMapping(); foreach($params as $key => $value) { if(! in_array($key, array('preferredlanguage','mail', 'displayname'))) { if(array_key_exists($key, $mapping)){ $this->setUserParameter($mapping[$key], $value); } } } return $this; } /** * @return array */ public function getUserRawParameters() { return $this->userRawParameters; } /** * @param mixed $language */ public function setLanguageUi($languageUri) { $this->languageUi = array((string)$languageUri); 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; 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($this->getUserParameter($property)); } 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; } }