You are here

RouteSubscriber.php in Open Social 10.3.x

Same filename in this branch
  1. 10.3.x modules/custom/social_language/src/Routing/RouteSubscriber.php
  2. 10.3.x modules/custom/social_ajax_comments/src/Routing/RouteSubscriber.php
  3. 10.3.x modules/social_features/social_private_message/src/Routing/RouteSubscriber.php
  4. 10.3.x modules/social_features/social_content_block/src/Routing/RouteSubscriber.php
  5. 10.3.x modules/social_features/social_post/src/Routing/RouteSubscriber.php
  6. 10.3.x modules/social_features/social_group/src/Routing/RouteSubscriber.php
  7. 10.3.x modules/social_features/social_topic/src/Routing/RouteSubscriber.php
  8. 10.3.x modules/social_features/social_user/src/Routing/RouteSubscriber.php
  9. 10.3.x modules/social_features/social_event/src/Routing/RouteSubscriber.php
  10. 10.3.x modules/social_features/social_content_report/src/Routing/RouteSubscriber.php
  11. 10.3.x modules/social_features/social_core/src/Routing/RouteSubscriber.php
  12. 10.3.x modules/social_features/social_comment/src/Routing/RouteSubscriber.php
  13. 10.3.x modules/social_features/social_post/modules/social_post_album/src/Routing/RouteSubscriber.php
  14. 10.3.x modules/social_features/social_group/modules/social_group_default_route/src/RouteSubscriber/RouteSubscriber.php
  15. 10.3.x modules/social_features/social_group/modules/social_group_invite/src/Routing/RouteSubscriber.php
  16. 10.3.x modules/social_features/social_event/modules/social_event_managers/src/EventSubscriber/RouteSubscriber.php
  17. 10.3.x modules/social_features/social_event/modules/social_event_invite/src/Routing/RouteSubscriber.php
Same filename and directory in other branches
  1. 8.9 modules/custom/social_language/src/Routing/RouteSubscriber.php
  2. 8 modules/custom/social_language/src/Routing/RouteSubscriber.php
  3. 8.2 modules/custom/social_language/src/Routing/RouteSubscriber.php
  4. 8.3 modules/custom/social_language/src/Routing/RouteSubscriber.php
  5. 8.4 modules/custom/social_language/src/Routing/RouteSubscriber.php
  6. 8.5 modules/custom/social_language/src/Routing/RouteSubscriber.php
  7. 8.6 modules/custom/social_language/src/Routing/RouteSubscriber.php
  8. 8.7 modules/custom/social_language/src/Routing/RouteSubscriber.php
  9. 8.8 modules/custom/social_language/src/Routing/RouteSubscriber.php
  10. 10.0.x modules/custom/social_language/src/Routing/RouteSubscriber.php
  11. 10.1.x modules/custom/social_language/src/Routing/RouteSubscriber.php
  12. 10.2.x modules/custom/social_language/src/Routing/RouteSubscriber.php

File

modules/custom/social_language/src/Routing/RouteSubscriber.php
View source
<?php

namespace Drupal\social_language\Routing;

use Drupal\Core\Routing\RouteSubscriberBase;
use Drupal\Core\Routing\RoutingEvents;
use Symfony\Component\Routing\RouteCollection;

/**
 * Class RouteSubscriber.
 *
 * @package Drupal\social_language\Routing
 * Listens to the dynamic route events.
 */
class RouteSubscriber extends RouteSubscriberBase {

  /**
   * {@inheritdoc}
   */
  protected function alterRoutes(RouteCollection $collection) {

    // Set custom permissions for account email & site information & menu items
    // translation pages.
    $routes = [
      'translate system information' => [
        'config_translation.item.add.system.site_information_settings',
        'config_translation.item.delete.system.site_information_settings',
        'config_translation.item.edit.system.site_information_settings',
        'config_translation.item.overview.system.site_information_settings',
      ],
      'translate account settings' => [
        'config_translation.item.add.entity.user.admin_form',
        'config_translation.item.delete.entity.user.admin_form',
        'config_translation.item.edit.entity.user.admin_form',
        'config_translation.item.overview.entity.user.admin_form',
      ],
      'translate menu_link_content' => [
        'entity.menu_link_content.content_translation_add',
        'entity.menu_link_content.content_translation_delete',
        'entity.menu_link_content.content_translation_edit',
        'entity.menu_link_content.content_translation_overview',
      ],
    ];

    // Loop through routes that need alteration.
    foreach ($routes as $permission => $route_strings) {
      foreach ($route_strings as $route_string) {
        if ($route = $collection
          ->get($route_string)) {
          $route
            ->setRequirements([
            '_social_language_access' => $permission,
          ]);
        }
      }
    }

    // Restrict access to translations if user can't edit the original content.
    // @todo: make there restrictions more general (for custom entities, blocks, etc)
    $entity_types = [
      'node',
      'group',
    ];
    foreach ($entity_types as $entity_type_id) {
      $routes = [
        "entity.{$entity_type_id}.content_translation_overview",
        "entity.{$entity_type_id}.content_translation_add",
        "entity.{$entity_type_id}.content_translation_edit",
        "entity.{$entity_type_id}.content_translation_delete",
      ];
      foreach ($routes as $name) {
        if ($route = $collection
          ->get($name)) {
          $route
            ->setRequirement('_entity_access', "{$entity_type_id}.update");
        }
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {

    // Come after content_translation.
    $events[RoutingEvents::ALTER] = [
      'onAlterRoutes',
      -220,
    ];
    return $events;
  }

}

Classes

Namesort descending Description
RouteSubscriber Class RouteSubscriber.