Select Git revision
UserAbstract.php
-
Bertrand Gauthier authored
Ajout possibilité de choisir une clé préférée pour l'obtention des données d'identité ('ldap' ou 'db'). Tests unitaires.
Bertrand Gauthier authoredAjout possibilité de choisir une clé préférée pour l'obtention des données d'identité ('ldap' ou 'db'). Tests unitaires.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
UserAbstract.php 2.34 KiB
<?php
namespace UnicaenAuth\View\Helper;
use Zend\I18n\View\Helper\AbstractTranslatorHelper;
use Zend\Authentication\AuthenticationService;
use Zend\View\Exception\InvalidArgumentException;
/**
* Classe mère des aides de vue concernant l'utilisateur connecté.
*
* @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
*/
abstract class UserAbstract extends AbstractTranslatorHelper
{
protected $authService;
/**
* Constructeur.
*
* @param AuthenticationService $authService
*/
public function __construct(AuthenticationService $authService = null)
{
if (null !== $authService) {
$this->setAuthService($authService);
}
}
/**
* Get Authentication Service.
*
* @return \Zend\Authentication\AuthenticationService
*/
public function getAuthService()
{
return $this->authService;
}
/**
* Set Authentication Service.
*
* @param \Zend\Authentication\AuthenticationService $authService
* @return UserAbstract
*/
public function setAuthService($authService)
{
$this->authService = $authService;
return $this;
}
/**
* Retourne les données d'identité courante éventuelle.
*
* @param string $preferedKey
* @return mixed
*/
public function getIdentity($preferedKey = null)
{
if (!$this->getAuthService() || !$this->getAuthService()->hasIdentity()) {
return null;
}
$identity = $this->getAuthService()->getIdentity();
if (is_array($identity)) {
$keys = array('ldap', 'db');
if ($preferedKey) {
// on met la clé spécifiée en tête de liste
$keys = array_merge(($tmp = array($preferedKey)), array_diff($keys, $tmp));
}
$found = null;
foreach ($keys as $key) {
if (isset($identity[$key])) {
$found = $identity[$key];
break;
}
}
if (null === $found) {
throw new InvalidArgumentException(
"Aucune des clés suivantes n'a été trouvée dans les données d'identité: " . implode(", ", $keys) . ".");
}
$identity = $found;
}
return $identity;
}
}