adding custom feature from ldap auth
This commit is contained in:
parent
0de6b3e6f3
commit
d2b1a0a3b5
@ -23,7 +23,7 @@
|
|||||||
* Authentication adapter interface to be implemented by authentication methodes
|
* Authentication adapter interface to be implemented by authentication methodes
|
||||||
*
|
*
|
||||||
* @author christophe massin
|
* @author christophe massin
|
||||||
* @package authKeyValue
|
* @package authLdap
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -31,7 +31,8 @@ namespace oat\authLdap\model;
|
|||||||
|
|
||||||
use core_kernel_users_Service;
|
use core_kernel_users_Service;
|
||||||
use core_kernel_users_InvalidLoginException;
|
use core_kernel_users_InvalidLoginException;
|
||||||
use oat\authKeyValue\model\AuthKeyValueUser;
|
use oat\authLdap\model\LdapUser;
|
||||||
|
use oat\generisHard\models\hardsql\Exception;
|
||||||
use oat\oatbox\user\auth\LoginAdapter;
|
use oat\oatbox\user\auth\LoginAdapter;
|
||||||
use Zend\Authentication\Adapter\Ldap;
|
use Zend\Authentication\Adapter\Ldap;
|
||||||
use common_persistence_Manager;
|
use common_persistence_Manager;
|
||||||
@ -53,6 +54,9 @@ class LdapAdapter implements LoginAdapter
|
|||||||
/** @var $configuration array $configuration */
|
/** @var $configuration array $configuration */
|
||||||
protected $configuration;
|
protected $configuration;
|
||||||
|
|
||||||
|
/** @var $mapping array $mapping */
|
||||||
|
protected $mapping;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Zend\Authentication\Adapter\Ldap
|
* @var \Zend\Authentication\Adapter\Ldap
|
||||||
*/
|
*/
|
||||||
@ -66,6 +70,7 @@ class LdapAdapter implements LoginAdapter
|
|||||||
|
|
||||||
$this->adapter = new Ldap();
|
$this->adapter = new Ldap();
|
||||||
$this->adapter->setOptions($configuration['config']);
|
$this->adapter->setOptions($configuration['config']);
|
||||||
|
$this->setMapping($configuration['mapping']);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,11 +99,9 @@ class LdapAdapter implements LoginAdapter
|
|||||||
$result = $adapter->getAccountObject();
|
$result = $adapter->getAccountObject();
|
||||||
$params = get_object_vars($result);
|
$params = get_object_vars($result);
|
||||||
|
|
||||||
$user = new LdapUser();
|
$user = new LdapUser($this->getMapping());
|
||||||
|
|
||||||
$user->setConfiguration($this->getConfiguration());
|
|
||||||
$user->setUserRawParameters($params);
|
$user->setUserRawParameters($params);
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -141,6 +144,24 @@ class LdapAdapter implements LoginAdapter
|
|||||||
return $this->configuration;
|
return $this->configuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $mapping
|
||||||
|
*/
|
||||||
|
public function setMapping($mapping)
|
||||||
|
{
|
||||||
|
$this->mapping = $mapping;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getMapping()
|
||||||
|
{
|
||||||
|
return $this->mapping;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $password
|
* @param string $password
|
||||||
*/
|
*/
|
||||||
|
@ -73,6 +73,27 @@ class LdapUser extends common_user_User {
|
|||||||
protected $languageDefLg = array(DEFAULT_LANG);
|
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
|
* Sets the language URI
|
||||||
*
|
*
|
||||||
@ -119,11 +140,26 @@ class LdapUser extends common_user_User {
|
|||||||
{
|
{
|
||||||
$this->setRoles(array('http://www.tao.lu/Ontologies/TAO.rdf#DeliveryRole'));
|
$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->setLanguageUi($params['preferredlanguage']) : DEFAULT_LANG;
|
||||||
isset($params['preferredlanguage']) ? $this->setLanguageDefLg($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['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']) ;
|
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 $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user