Skip to content

Commit 59ff63c

Browse files
authored
Merge pull request #50 from Saeven/feature/view-helpers
Adding in some view helpers.
2 parents 134cace + 580da6d commit 59ff63c

File tree

5 files changed

+115
-1
lines changed

5 files changed

+115
-1
lines changed

config/module.config.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
use CirclicalUser\Factory\Mapper\UserMapperFactory;
1111
use CirclicalUser\Factory\Service\AccessServiceFactory;
1212
use CirclicalUser\Factory\Strategy\RedirectStrategyFactory;
13+
use CirclicalUser\Factory\View\Helper\ControllerAccessViewHelperFactory;
14+
use CirclicalUser\Factory\View\Helper\RoleAccessViewHelperFactory;
1315
use CirclicalUser\Listener\AccessListener;
1416
use CirclicalUser\Listener\UserEntityListener;
1517
use CirclicalUser\Mapper\GroupPermissionMapper;
@@ -23,6 +25,8 @@
2325
use CirclicalUser\Service\AuthenticationService;
2426
use CirclicalUser\Factory\Service\AuthenticationServiceFactory;
2527
use CirclicalUser\Strategy\RedirectStrategy;
28+
use CirclicalUser\View\Helper\ControllerAccessViewHelper;
29+
use CirclicalUser\View\Helper\RoleAccessViewHelper;
2630
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
2731

2832
return [
@@ -80,7 +84,6 @@
8084
],
8185

8286
'service_manager' => [
83-
8487
'factories' => [
8588
AuthenticationService::class => AuthenticationServiceFactory::class,
8689
AccessService::class => AccessServiceFactory::class,
@@ -95,6 +98,18 @@
9598
],
9699
],
97100

101+
'view_helpers' => [
102+
'aliases' => [
103+
'canAccessController' => ControllerAccessViewHelper::class,
104+
'hasRole' => RoleAccessViewHelper::class,
105+
],
106+
107+
'factories' => [
108+
ControllerAccessViewHelper::class => ControllerAccessViewHelperFactory::class,
109+
RoleAccessViewHelper::class => RoleAccessViewHelperFactory::class,
110+
],
111+
],
112+
98113
'controllers' => [
99114
'factories' => [
100115
CliController::class => CliControllerFactory::class,
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace CirclicalUser\Factory\View\Helper;
4+
5+
use CirclicalUser\Service\AccessService;
6+
use CirclicalUser\View\Helper\ControllerAccessViewHelper;
7+
use Interop\Container\ContainerInterface;
8+
use Zend\ServiceManager\Factory\FactoryInterface;
9+
10+
class ControllerAccessViewHelperFactory implements FactoryInterface
11+
{
12+
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
13+
{
14+
return new ControllerAccessViewHelper(
15+
$container->get(AccessService::class)
16+
);
17+
}
18+
}
19+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace CirclicalUser\Factory\View\Helper;
4+
5+
use CirclicalUser\Service\AccessService;
6+
use Interop\Container\ContainerInterface;
7+
use Zend\ServiceManager\Factory\FactoryInterface;
8+
use CirclicalUser\View\Helper\RoleAccessViewHelper;
9+
10+
class RoleAccessViewHelperFactory implements FactoryInterface
11+
{
12+
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
13+
{
14+
return new RoleAccessViewHelper(
15+
$container->get(AccessService::class)
16+
);
17+
}
18+
}
19+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace CirclicalUser\View\Helper;
4+
5+
use CirclicalUser\Service\AccessService;
6+
use Zend\View\Helper\AbstractHelper;
7+
8+
class ControllerAccessViewHelper extends AbstractHelper
9+
{
10+
private $accessService;
11+
12+
public function __construct(AccessService $accessService)
13+
{
14+
$this->accessService = $accessService;
15+
}
16+
17+
/**
18+
* canAccessController
19+
*/
20+
public function __invoke(string $controllerName): bool
21+
{
22+
return $this->accessService->canAccessController($controllerName);
23+
}
24+
}
25+
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace CirclicalUser\View\Helper;
4+
5+
use CirclicalUser\Service\AccessService;
6+
use Zend\View\Helper\AbstractHelper;
7+
8+
class RoleAccessViewHelper extends AbstractHelper
9+
{
10+
private $accessService;
11+
12+
public function __construct(AccessService $accessService)
13+
{
14+
$this->accessService = $accessService;
15+
}
16+
17+
/**
18+
* hasRole
19+
*/
20+
public function __invoke($roleNameOrList): bool
21+
{
22+
$roles = $roleNameOrList;
23+
if (is_string($roleNameOrList)) {
24+
$roles = [$roleNameOrList];
25+
}
26+
27+
foreach ($roles as $roleName) {
28+
if ($this->accessService->hasRoleWithName($roleName)) {
29+
return true;
30+
}
31+
}
32+
33+
return false;
34+
}
35+
}
36+

0 commit comments

Comments
 (0)