Skip to content
Snippets Groups Projects
Select Git revision
  • e5378b1d2928633c4baf8073e57406cac72aab70
  • master default protected
  • 5.x
  • ll-php8-bs5
  • release_5_bs5
  • ll-php8
  • 4.x
  • laminas_migration
  • release_1.0.0.2
  • release_4.0.0
  • release_3.2.8
  • bootstrap4_migration
  • 1.0.0.3
  • 6.0.7
  • 6.0.6
  • 6.0.5
  • 6.0.4
  • 6.0.3
  • 6.0.2
  • 6.0.1
  • 5.1.1
  • 6.0.0
  • 5.1.0
  • 5.0.0
  • 4.0.2
  • 3.2.11
  • 4.0.1
  • 3.2.10
  • 4.0.0
  • 1.0.0.2
  • 3.2.9
  • 3.2.8
32 results

User.php

Blame
  • 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);
            }