3 namespace Drupal\entity_browser;
5 use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
6 use Drupal\Core\Entity\EntityTypeManagerInterface;
7 use Drupal\Core\StringTranslation\TranslationManager;
8 use Symfony\Component\DependencyInjection\ContainerInterface;
11 * Generates routes for entity browsers.
13 class Permissions implements ContainerInjectionInterface {
16 * The entity browser storage.
18 * @var \Drupal\Core\Entity\EntityStorageInterface
20 protected $browserStorage;
23 * Translation manager service.
25 * @var \Drupal\Core\StringTranslation\TranslationManager
27 protected $translationManager;
30 * Constructs Permissions object.
32 * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
33 * Entity manager service.
34 * @param \Drupal\Core\StringTranslation\TranslationManager $translation
36 public function __construct(EntityTypeManagerInterface $entity_type_manager, TranslationManager $translation) {
37 $this->browserStorage = $entity_type_manager->getStorage('entity_browser');
38 $this->translationManager = $translation;
44 public static function create(ContainerInterface $container) {
46 $container->get('entity_type.manager'),
47 $container->get('string_translation')
52 * Dynamically set permissions for entity browsers with routes.
54 public function permissions() {
56 /** @var \Drupal\entity_browser\EntityBrowserInterface[] $browsers */
57 $browsers = $this->browserStorage->loadMultiple();
59 foreach ($browsers as $browser) {
60 if ($browser->route()) {
61 $permissions['access ' . $browser->id() . ' entity browser pages'] = array(
62 'title' => $this->translationManager->translate('Access @name pages', array('@name' => $browser->label())),
63 'description' => $this->translationManager->translate('Access pages that %browser uses to operate.', array('%browser' => $browser->label())),