Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
9 / 9
AclUser\Permissions\Acl\Factory\AccessControlListFactory
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
7
100.00% covered (success)
100.00%
9 / 9
 __invoke
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
5 / 5
 getResources
100.00% covered (success)
100.00%
1 / 1
6
100.00% covered (success)
100.00%
4 / 4
<?php
/**
 * Class AccessControlListFactory
 *
 * @package     AclUser\Permissions\Acl\Factory
 * @author      Nigel Hurnell
 * @version     v.1.0.0
 * @license     BSD
 * @copyright   Copyright (c) 2017, Nigel Hurnell
 */
namespace AclUser\Permissions\Acl\Factory;
use Interop\Container\ContainerInterface;
use AclUser\Permissions\Acl\AccessControlList;
use Zend\Authentication\AuthenticationService;
use AclUser\Service\UserManager;
/**
 * The factory responsible for creating of AccessControlList object.
 * 
 * @package     AclUser\Permissions\Acl\Factory
 * @author      Nigel Hurnell
 * @version     v.1.0.0
 * @license     BSD
 * @copyright   Copyright (c) 2017, Nigel Hurnell
 */
class AccessControlListFactory
{
    /**
     * Create/instantiate AccessControlList object with injected dependencies
     * 
     * @param ContainerInterface $container
     * @param string $requestedName
     * @param array $options
     * @return AccessControlList
     */
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null): AccessControlList
    {
        $authService = $container->get(AuthenticationService::class);
        $userManager = $container->get(UserManager::class);
        $config = $container->get('config');
        $resources = $this->getResources($config);
        return new AccessControlList($resources, $authService, $userManager, $config);
    }
    /**
     * Get all controller aliases that have been defined with all module.comg.php files
     * 
     * @param array $config globbed configuration parameters
     * @return array
     * @throws \Exception
     */
    private function getResources($config)
    {
        if (!is_array($config) || !array_key_exists('controllers', $config) || !is_array($config['controllers']) || !array_key_exists('aliases', $config['controllers']) || !is_array($config['controllers']['aliases'])) {
            throw new \Exception('The resources system is based on controller aliases');
        }
        $resources = $config['controllers']['aliases'];
        return array_keys($resources);
    }
}