permissions_repository-1.0.x-dev/src/Controller/PermissionsRepositoryController.php
src/Controller/PermissionsRepositoryController.php
<?php
declare(strict_types=1);
namespace Drupal\permissions_repository\Controller;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Discovery\YamlDiscovery;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Drupal\permissions_repository\Service\PermissionsRepositoryFactoryInterface;
use Drupal\permissions_repository\Service\PermissionsRepositoryReturnStyle;
/**
* Returns responses for Permissions repository routes.
*/
final class PermissionsRepositoryController extends ControllerBase {
/**
* The controller constructor.
*/
public function __construct(
private readonly PermissionsRepositoryFactoryInterface $permissionsRepositoryFactory,
) {}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container): self {
return new self(
$container->get('permissions_repository.repository_factory'),
);
}
/**
* Currently not used.
*/
public function alterPermissionsForm(&$form, $form_state, $form_id) {
$content['somehelp'] = [
'#type' => 'markup',
'#markup' => t('Some additional help message'),
];
$form['permissions']['permissions_repository'][0] = [
'#type' => 'inline_template',
'#template' => '{{ title }} <i class="icon icon-info" data-tooltip="{{ settings }}"></i>',
'#context' => [
'settings' => \Drupal\Component\Serialization\Json::encode([
'content' => \Drupal::service('renderer')->renderInIsolation($content),
'placement' => 'bottom',
]),
'title' => $form['permissions']['permissions_repository'][0]['#markup'],
],
];
$form['#attached']['library'][] = 'tooltip/tooltip';
}
/**
* @see permissions_repository.permissions.yml
*/
public function getPerms(): array {
return [
'do something' => [
'title' => 'Do something',
'section' => 'admin',
],
];
}
/**
* @see permissions_repository.permissions.yml
*/
public function getSections(): array {
return [
'unused_section' => [
'title' => 'unused_section',
],
];
}
public function repotest(): array {
$yamlDiscovery = new YamlDiscovery('permissions', $this->moduleHandler()->getModuleDirectories());
$list = $yamlDiscovery->findAll();
$res = $this->permissionsRepositoryFactory->createPermissionsRepository($list);
//rawdebug($res);
$build['content'] = [
'#type' => 'item',
'#markup' => 'Change this to use rawdebug or print_r to see what $res contains.',
];
return $build;
}
}
