Db.php 2.37 KB
Newer Older
1
<?php
2

3 4
namespace UnicaenAuth\Authentication\Adapter;

5
use Interop\Container\ContainerInterface;
6
use UnicaenApp\ServiceManager\ServiceLocatorAwareInterface;
7
use UnicaenApp\ServiceManager\ServiceLocatorAwareTrait;
8
use UnicaenAuth\Options\ModuleOptions;
9
use Zend\Authentication\Storage\Session;
10
use Zend\EventManager\EventInterface;
11
use Zend\ServiceManager\Exception\ServiceNotFoundException;
12 13

/**
Bertrand Gauthier's avatar
Bertrand Gauthier committed
14 15 16
 * Adpater d'authentification à partir de la base de données.
 * 
 * Ajout par rapport à la classe mère : si aucune base de données ou table n'existe,
17
 * l'authentification ne plante pas (i.e. renvoit false).
18 19 20
 *
 * @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
 */
21
class Db extends \ZfcUser\Authentication\Adapter\Db implements ServiceLocatorAwareInterface
22
{
23 24
    use ServiceLocatorAwareTrait;

25
    /**
26 27
     * Set service locator
     *
28
     * @param ContainerInterface $serviceLocator
29 30
     * @return self
     * @deprecated Abandonnez l'injection du service locator, svp
31
     */
32
    public function setServiceLocator(ContainerInterface $serviceLocator)
33 34 35 36 37 38
    {
        $this->serviceLocator = $serviceLocator;
        $this->serviceManager = $serviceLocator;

        return $this;
    }
39 40 41 42

    /**
     * Authentification.
     *
43
     * @param EventInterface $e
44 45
     * @return boolean
     */
46
    public function authenticate(EventInterface $e)
47
    {
48 49 50 51
        // NB: Dans la version 3.0.0 de zf-commons/zfc-user, cette méthode prend un EventInterface.
        // Mais dans la branche 3.x, c'est un AdapterChainEvent !
        // Si un jour c'est un AdapterChainEvent qui est attendu, plus besoin de faire $e->getTarget().
        if ($e->getTarget()->getIdentity()) {
52
            return true;
53 54
        }
        
55 56 57
        try {
            $result = parent::authenticate($e);
        }
58
        catch (ServiceNotFoundException $snfe) {
59 60
            return false;
        }
61

62 63 64 65
        return $result;
    }

    /**
66
     * @param \ZfcUser\Options\ModuleOptions $options
67 68
     * @return self
     */
69
    public function setOptions(\ZfcUser\Options\ModuleOptions $options)
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
    {
        $this->options = $options;
        return $this;
    }

    /**
     * @return ModuleOptions
     */
    public function getOptions()
    {
        if (!$this->options instanceof ModuleOptions) {
            $this->setOptions($this->getServiceManager()->get('unicaen-auth_module_options'));
        }
        return $this->options;
    }
}