Skip to content
Snippets Groups Projects
Select Git revision
  • d1041cbe88c67740a046e02c39d0f5ee5e89e8ee
  • 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

ChainServiceFactory.php

  • Bertrand Gauthier's avatar
    Bertrand Gauthier authored
    Améliorations importantes : notamment collecte des rôles disponibles et de ceux de l'identité authentifiée.
    4b79eaa4
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ChainServiceFactory.php 1.20 KiB
    <?php
    namespace UnicaenAuth\Authentication\Storage;
    
    use Zend\ServiceManager\FactoryInterface;
    use Zend\ServiceManager\ServiceLocatorInterface;
    
    /**
     * Description of ChainAuthenticationStorageServiceFactory
     *
     * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
     */
    class ChainServiceFactory implements FactoryInterface
    {
        /**
         * Create service
         *
         * @param ServiceLocatorInterface $serviceLocator
         * @return mixed
         */
        public function createService(ServiceLocatorInterface $serviceLocator)
        {
            $storages = array(
                200 => 'UnicaenAuth\Authentication\Storage\Ldap',
                100 => 'UnicaenAuth\Authentication\Storage\Db',
            );
            
            $chain = new Chain();
            $chain->setServiceLocator($serviceLocator);
            
            foreach ($storages as $priority => $name) {
                $storage = $serviceLocator->get($name);
                $chain->getEventManager()->attach('read', array($storage, 'read'), $priority);
                $chain->getEventManager()->attach('write', array($storage, 'write'), $priority);
                $chain->getEventManager()->attach('clear', array($storage, 'clear'), $priority);
            }
            
            return $chain;
        }
    }