Skip to content
Snippets Groups Projects
Select Git revision
  • 9fea87fefcb74f2ed0196fab0e36c8d48901d38a
  • master default protected
  • cleanup_fixtures
  • add-openvox
  • freebsd-14
  • remove-legacy-top-scope-syntax
  • rel430
  • tests
  • revert-363-augeas-module-cleanup
  • release-4.1.0
  • puppet8
  • relax-dependencies
  • rel400
  • mode
  • puppet7
  • release-3.1.0
  • freebsd13
  • freebsd11
  • stdlib
  • centos
  • fedora
  • v5.1.0
  • v5.0.0
  • v4.5.0
  • v4.4.0
  • v4.3.0
  • v4.2.1
  • v4.2.0
  • v4.1.0
  • v4.0.0
  • v3.1.0
  • v3.0.0
  • v2.0.0
  • 1.12.0
  • 1.11.0
  • 1.10.0
  • 1.9.0
  • 1.8.0
  • 1.7.0
  • 1.6.0
  • 1.5.0
41 results

init.pp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AdapterChain.php 2.44 KiB
    <?php
    
    namespace UnicaenAuthentification\Authentication\Adapter;
    
    use Zend\Stdlib\RequestInterface as Request;
    use Zend\Stdlib\ResponseInterface as Response;
    use ZfcUser\Exception;
    
    class AdapterChain extends \ZfcUser\Authentication\Adapter\AdapterChain
    {
        /**
         * prepareForAuthentication
         *
         * @param  Request $request
         * @return Response|bool
         * @throws Exception\AuthenticationEventException
         */
        public function prepareForAuthentication(Request $request)
        {
            $e = $this->getEvent();
            $e->setRequest($request);
    
            $this->getEventManager()->trigger('authenticate.pre', $e);
    
            $result = $this->getEventManager()->triggerUntil(function ($result) {
                return $result === true || $result instanceof Response;
            }, 'authenticate', $e);
    
            if ($result->stopped()) {
                $last = $result->last();
                if ($last === true || $last instanceof Response) {
                    return $last;
                }
    //            throw new Exception\AuthenticationEventException(
    //                sprintf(
    //                    'Auth event was stopped without a response. Got "%s" instead',
    //                    is_object($result->last()) ? get_class($result->last()) : gettype($result->last())
    //                )
    //            );
            }
    
            if ($e->getIdentity()) {
                $this->getEventManager()->trigger('authenticate.success', $e);
                return true;
            }
    
            $this->getEventManager()->trigger('authenticate.fail', $e);
    
            return false;
        }
    
        /**
         * logoutAdapters
         *
         * @return Response|null
         */
        public function logoutAdapters(): ?Response
        {
            //Adapters might need to perform additional cleanup after logout
            $responseCollection = $this->getEventManager()->triggerUntil(function ($test) {
                return ($test instanceof Response);
            }, 'logout', $this->getEvent());
    
            if ($responseCollection->stopped()) {
                if ($responseCollection->last() instanceof Response) {
                    return $responseCollection->last();
                }
    
                throw new Exception\AuthenticationEventException(
                    sprintf(
                        'Auth event was stopped without a response. Got "%s" instead',
                        is_object($responseCollection->last()) ? get_class($responseCollection->last()) : gettype($responseCollection->last())
                    )
                );
            }
    
            return null;
        }
    }