Skip to content

Commit

Permalink
Merge pull request #50 from Saeven/feature/view-helpers
Browse files Browse the repository at this point in the history
Adding in some view helpers.
  • Loading branch information
Saeven authored Mar 30, 2020
2 parents 134cace + 580da6d commit 59ff63c
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 1 deletion.
17 changes: 16 additions & 1 deletion config/module.config.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
use CirclicalUser\Factory\Mapper\UserMapperFactory;
use CirclicalUser\Factory\Service\AccessServiceFactory;
use CirclicalUser\Factory\Strategy\RedirectStrategyFactory;
use CirclicalUser\Factory\View\Helper\ControllerAccessViewHelperFactory;
use CirclicalUser\Factory\View\Helper\RoleAccessViewHelperFactory;
use CirclicalUser\Listener\AccessListener;
use CirclicalUser\Listener\UserEntityListener;
use CirclicalUser\Mapper\GroupPermissionMapper;
Expand All @@ -23,6 +25,8 @@
use CirclicalUser\Service\AuthenticationService;
use CirclicalUser\Factory\Service\AuthenticationServiceFactory;
use CirclicalUser\Strategy\RedirectStrategy;
use CirclicalUser\View\Helper\ControllerAccessViewHelper;
use CirclicalUser\View\Helper\RoleAccessViewHelper;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;

return [
Expand Down Expand Up @@ -80,7 +84,6 @@
],

'service_manager' => [

'factories' => [
AuthenticationService::class => AuthenticationServiceFactory::class,
AccessService::class => AccessServiceFactory::class,
Expand All @@ -95,6 +98,18 @@
],
],

'view_helpers' => [
'aliases' => [
'canAccessController' => ControllerAccessViewHelper::class,
'hasRole' => RoleAccessViewHelper::class,
],

'factories' => [
ControllerAccessViewHelper::class => ControllerAccessViewHelperFactory::class,
RoleAccessViewHelper::class => RoleAccessViewHelperFactory::class,
],
],

'controllers' => [
'factories' => [
CliController::class => CliControllerFactory::class,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace CirclicalUser\Factory\View\Helper;

use CirclicalUser\Service\AccessService;
use CirclicalUser\View\Helper\ControllerAccessViewHelper;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;

class ControllerAccessViewHelperFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
return new ControllerAccessViewHelper(
$container->get(AccessService::class)
);
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

namespace CirclicalUser\Factory\View\Helper;

use CirclicalUser\Service\AccessService;
use Interop\Container\ContainerInterface;
use Zend\ServiceManager\Factory\FactoryInterface;
use CirclicalUser\View\Helper\RoleAccessViewHelper;

class RoleAccessViewHelperFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
return new RoleAccessViewHelper(
$container->get(AccessService::class)
);
}
}

25 changes: 25 additions & 0 deletions src/CirclicalUser/View/Helper/ControllerAccessViewHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace CirclicalUser\View\Helper;

use CirclicalUser\Service\AccessService;
use Zend\View\Helper\AbstractHelper;

class ControllerAccessViewHelper extends AbstractHelper
{
private $accessService;

public function __construct(AccessService $accessService)
{
$this->accessService = $accessService;
}

/**
* canAccessController
*/
public function __invoke(string $controllerName): bool
{
return $this->accessService->canAccessController($controllerName);
}
}

36 changes: 36 additions & 0 deletions src/CirclicalUser/View/Helper/RoleAccessViewHelper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

namespace CirclicalUser\View\Helper;

use CirclicalUser\Service\AccessService;
use Zend\View\Helper\AbstractHelper;

class RoleAccessViewHelper extends AbstractHelper
{
private $accessService;

public function __construct(AccessService $accessService)
{
$this->accessService = $accessService;
}

/**
* hasRole
*/
public function __invoke($roleNameOrList): bool
{
$roles = $roleNameOrList;
if (is_string($roleNameOrList)) {
$roles = [$roleNameOrList];
}

foreach ($roles as $roleName) {
if ($this->accessService->hasRoleWithName($roleName)) {
return true;
}
}

return false;
}
}

0 comments on commit 59ff63c

Please sign in to comment.