Select Git revision
-
Bertrand Gauthier authoredBertrand Gauthier authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
User.php 5.29 KiB
<?php
namespace UnicaenAuth\Service;
use Zend\ServiceManager\ServiceManager;
use UnicaenApp\Service\Ldap\People as LdapPeopleService;
use UnicaenAuth\Options\AuthenticationOptionsInterface;
use \ZfcUser\Authentication\Adapter\AdapterChainEvent as AuthEvent;
/**
* Service d'enregistrement dans la table des utilisateurs de l'application
* de l'utilisateur authentifié avec succès.
*
* @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
*/
class User implements \Zend\ServiceManager\ServiceManagerAwareInterface
{
/**
* @var ServiceManager
*/
protected $serviceManager;
/**
* @var AuthenticationOptionsInterface
*/
protected $options;
/**
* @var \ZfcUser\Options\ModuleOptions
*/
protected $zfcUserOptions;
/**
* @var LdapPeopleService
*/
protected $ldapPeopleService;
/**
* Save authenticated user in database from LDAP data.
*
* @return bool
*/
public function userAuthenticated(AuthEvent $e)
{
if (!$this->getOptions()->getSaveLdapUserInDatabase()) {
return false;
}
if (!($username = $e->getIdentity())) {
return false;
}
if (is_int($username)) {
// c'est un id: l'utilisateur existe déjà dans la bdd (et pas dans le LDAP), rien à faire
return true;
}
if (!is_string($username)) {
throw new \UnicaenApp\Exception("Identité rencontrée inattendue.");
}
// recherche de l'individu dans l'annuaire LDAP
$ldapPeople = $this->getLdapPeopleService()->getMapper()->findByUsername($username);
if (!$ldapPeople) {
return false;
}
// update/insert de l'utilisateur dans la table de l'appli
$mapper = $this->getServiceManager()->get('zfcuser_user_mapper'); /* @var $mapper \ZfcUser\Mapper\User */
try {
$entity = $mapper->findByUsername($username);
}