Commit 448bf935 authored by Laurent Lécluse's avatar Laurent Lécluse

Adaptation des assertions au ZF3

Fourniture d'une factory à utiliser par défaut
parent d4b42da1
Pipeline #5313 failed with stage
in 9 seconds
...@@ -3,11 +3,11 @@ ...@@ -3,11 +3,11 @@
namespace UnicaenAuth\Assertion; namespace UnicaenAuth\Assertion;
use BjyAuthorize\Service\Authorize; use BjyAuthorize\Service\Authorize;
use UnicaenApp\ServiceManager\ServiceLocatorAwareInterface; use UnicaenAuth\Service\AuthorizeService;
use UnicaenApp\ServiceManager\ServiceLocatorAwareTrait; use UnicaenAuth\Service\Traits\AuthorizeServiceAwareTrait;
use UnicaenAuth\Service\Traits\UserContextServiceAwareTrait; use UnicaenAuth\Service\Traits\UserContextServiceAwareTrait;
use UnicaenAuth\Service\UserContext;
use Zend\Mvc\MvcEvent; use Zend\Mvc\MvcEvent;
use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Zend\Permissions\Acl\Acl; use Zend\Permissions\Acl\Acl;
use Zend\Permissions\Acl\Assertion\AssertionInterface; use Zend\Permissions\Acl\Assertion\AssertionInterface;
use Zend\Permissions\Acl\Resource\ResourceInterface; use Zend\Permissions\Acl\Resource\ResourceInterface;
...@@ -18,10 +18,10 @@ use Zend\Permissions\Acl\Role\RoleInterface; ...@@ -18,10 +18,10 @@ use Zend\Permissions\Acl\Role\RoleInterface;
* *
* @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr> * @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
*/ */
abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAwareInterface abstract class AbstractAssertion implements AssertionInterface
{ {
use ServiceLocatorAwareTrait;
use UserContextServiceAwareTrait; use UserContextServiceAwareTrait;
use AuthorizeServiceAwareTrait;
/** /**
* @var Acl * @var Acl
...@@ -34,9 +34,9 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw ...@@ -34,9 +34,9 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
private $role = false; private $role = false;
/** /**
* @var FlashMessenger * @var MvcEvent
*/ */
private $fm; private $mvcEvent;
...@@ -117,9 +117,10 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw ...@@ -117,9 +117,10 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
*/ */
public function getAcl() public function getAcl()
{ {
if (!$this->acl){ if (!$this->acl) {
$this->acl = $this->getServiceAuthorize()->getAcl(); $this->acl = $this->getServiceAuthorize()->getAcl();
} }
return $this->acl; return $this->acl;
} }
...@@ -144,12 +145,13 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw ...@@ -144,12 +145,13 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
*/ */
public function getRole() public function getRole()
{ {
if (false === $this->role){ if (false === $this->role) {
$sUserContext = $this->getServiceUserContext(); $sUserContext = $this->serviceUserContext;
if ($sUserContext->getIdentity()) { if ($sUserContext->getIdentity()) {
$this->role = $sUserContext->getSelectedIdentityRole(); $this->role = $sUserContext->getSelectedIdentityRole();
} }
} }
return $this->role; return $this->role;
} }
...@@ -284,30 +286,26 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw ...@@ -284,30 +286,26 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
*/ */
protected function asserts($assertions) protected function asserts($assertions)
{ {
if (!is_array($assertions)){ if (!is_array($assertions)) {
$assertions = [$assertions]; $assertions = [$assertions];
} }
foreach( $assertions as $assertion ){ foreach ($assertions as $assertion) {
if (!$assertion) return false; if (!$assertion) return false;
} }
return true; return true;
} }
/**
* @var MvcEvent
*/
private $mvcEvent;
/**
* @param MvcEvent $mvcEvent
*/
public function setMvcEvent(MvcEvent $mvcEvent) public function setMvcEvent(MvcEvent $mvcEvent)
{ {
$this->mvcEvent = $mvcEvent; $this->mvcEvent = $mvcEvent;
} }
/** /**
* @return MvcEvent * @return MvcEvent
*/ */
...@@ -316,42 +314,4 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw ...@@ -316,42 +314,4 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
return $this->mvcEvent; return $this->mvcEvent;
} }
/**
* @var Authorize
*/
private $serviceAuthorize;
/**
* @param Authorize $serviceAuthorize
*/
public function setServiceAuthorize(Authorize $serviceAuthorize)
{
$this->serviceAuthorize = $serviceAuthorize;
}
/**
* @return Authorize
*/
private function getServiceAuthorize()
{
return $this->serviceAuthorize;
}
/**
* @param FlashMessenger $fm
* @deprecated Merci d'abandonner cette méthode : SoC violation !
*/
public function setFlashMessenger(FlashMessenger $fm)
{
$this->fm = $fm;
}
/**
* @return FlashMessenger
* @deprecated Merci d'abandonner cette méthode : SoC violation !
*/
protected function flashMessenger()
{
return $this->fm;
}
} }
\ No newline at end of file
<?php
namespace UnicaenAuth\Assertion;
use BjyAuthorize\Service\Authorize;
use Interop\Container\ContainerInterface;
use Zend\Authentication\AuthenticationService;
use Zend\Mvc\Application;
use Zend\ServiceManager\Factory\FactoryInterface;
/**
* Class AssertionFactory
*
* @package UnicaenAuth\Assertion
*/
class AssertionFactory implements FactoryInterface
{
/**
* @param ContainerInterface $container
*
* @return UserContext
*/
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
/* @var $application Application */
$application = $container->get('Application');
$mvcEvent = $application->getMvcEvent();
/* @var $serviceAuthorize Authorize */
$serviceAuthorize = $container->get('BjyAuthorize\Service\Authorize');
/** @var UserContext $serviceUserContext */
$serviceUserContext = $container->get('UnicaenAuth\Service\UserContext');
/* @var $assertion AbstractAssertion */
$assertion = new $requestedName;
$assertion->setMvcEvent($mvcEvent);
$assertion->setServiceAuthorize($serviceAuthorize);
$assertion->setServiceUserContext($serviceUserContext);
return $assertion;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment