search_api_autocomplete-8.x-1.x-dev/src/Permissions.php
src/Permissions.php
<?php namespace Drupal\search_api_autocomplete; use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Drupal\Core\Entity\BundlePermissionHandlerTrait; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\StringTranslation\StringTranslationTrait; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides permissions of the search_api_autocomplete module. */ class Permissions implements ContainerInjectionInterface { use BundlePermissionHandlerTrait; use StringTranslationTrait; /** * The entity storage service. * * @var \Drupal\Core\Entity\EntityStorageInterface */ protected $storage; /** * Constructs a Permissions object. * * @param \Drupal\Core\Entity\EntityStorageInterface $storage * The entity storage service. */ public function __construct(EntityStorageInterface $storage) { $this->storage = $storage; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container) { return new static( $container->get('entity_type.manager')->getStorage('search_api_autocomplete_search') ); } /** * Returns a list of permissions, one per configured search. * * @return array[] * A list of permission definitions, keyed by permission machine name. */ public function bySearch() { return $this->generatePermissions($this->storage->loadMultiple(), [$this, 'buildPermissions']); } /** * Returns a list of permissions for a single configured search. * * @return array * An associative array of permission names and descriptions. */ public function buildPermissions(SearchInterface $search) { $perms = []; $perms['use search_api_autocomplete for ' . $search->id()] = [ 'title' => $this->t('Use autocomplete for the %search search', ['%search' => $search->label()]), ]; return $perms; } }