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 @@
namespace UnicaenAuth\Assertion;
use BjyAuthorize\Service\Authorize;
use UnicaenApp\ServiceManager\ServiceLocatorAwareInterface;
use UnicaenApp\ServiceManager\ServiceLocatorAwareTrait;
use UnicaenAuth\Service\AuthorizeService;
use UnicaenAuth\Service\Traits\AuthorizeServiceAwareTrait;
use UnicaenAuth\Service\Traits\UserContextServiceAwareTrait;
use UnicaenAuth\Service\UserContext;
use Zend\Mvc\MvcEvent;
use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Zend\Permissions\Acl\Acl;
use Zend\Permissions\Acl\Assertion\AssertionInterface;
use Zend\Permissions\Acl\Resource\ResourceInterface;
......@@ -18,10 +18,10 @@ use Zend\Permissions\Acl\Role\RoleInterface;
*
* @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 AuthorizeServiceAwareTrait;
/**
* @var Acl
......@@ -34,9 +34,9 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
private $role = false;
/**
* @var FlashMessenger
* @var MvcEvent
*/
private $fm;
private $mvcEvent;
......@@ -117,9 +117,10 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
*/
public function getAcl()
{
if (!$this->acl){
if (!$this->acl) {
$this->acl = $this->getServiceAuthorize()->getAcl();
}
return $this->acl;
}
......@@ -144,12 +145,13 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
*/
public function getRole()
{
if (false === $this->role){
$sUserContext = $this->getServiceUserContext();
if (false === $this->role) {
$sUserContext = $this->serviceUserContext;
if ($sUserContext->getIdentity()) {
$this->role = $sUserContext->getSelectedIdentityRole();
}
}
return $this->role;
}
......@@ -284,30 +286,26 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
*/
protected function asserts($assertions)
{
if (!is_array($assertions)){
if (!is_array($assertions)) {
$assertions = [$assertions];
}
foreach( $assertions as $assertion ){
foreach ($assertions as $assertion) {
if (!$assertion) return false;
}
return true;
}
/**
* @var MvcEvent
*/
private $mvcEvent;
/**
* @param MvcEvent $mvcEvent
*/
public function setMvcEvent(MvcEvent $mvcEvent)
{
$this->mvcEvent = $mvcEvent;
}
/**
* @return MvcEvent
*/
......@@ -316,42 +314,4 @@ abstract class AbstractAssertion implements AssertionInterface, ServiceLocatorAw
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