ConfigTestPermissions.php

Namespace

Drupal\config_test

File

core/modules/config/tests/config_test/src/ConfigTestPermissions.php

View source
<?php

declare (strict_types=1);
namespace Drupal\config_test;

use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Provide dynamic permissions for testing permission dependencies on config.
 */
class ConfigTestPermissions implements ContainerInjectionInterface {
    use StringTranslationTrait;
    public function __construct(EntityTypeManagerInterface $entityTypeManager) {
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) : static {
        return new static($container->get('entity_type.manager'));
    }
    
    /**
     * Permissions callback.
     *
     * @return array
     *   The list of permissions.
     */
    public function configTestPermissions() : array {
        
        /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface[] $entities */
        $entities = $this->entityTypeManager
            ->getStorage('config_test')
            ->loadMultiple();
        $permissions = [];
        foreach ($entities as $entity) {
            $config_name = $entity->getConfigDependencyName();
            $permissions["permission with {$config_name} dependency"] = [
                'title' => $this->t('Permission with a dependency on config test entity %id', [
                    '%id' => $entity->id(),
                ]),
                'dependencies' => [
                    $entity->getConfigDependencyKey() => [
                        $config_name,
                    ],
                ],
            ];
        }
        return $permissions;
    }

}

Classes

Title Deprecated Summary
ConfigTestPermissions Provide dynamic permissions for testing permission dependencies on config.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.