xxxxxxxxxx
services:
example.standard_access_checker:
class: Drupal\example\Access\StandardAccessCheck
arguments: ['@current_user']
tags:
- { name: access_check, applies_to: _custom_access }
example.services_access_checker:
class: Drupal\example\Access\ServicesAccessCheck
arguments: ['@mymodule.service']
tags:
- { name: access_check }
xxxxxxxxxx
namespace Drupal\example\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
/**
* Listens to the dynamic route events.
*/
class RouteSubscriber extends RouteSubscriberBase {
/**
* {@inheritdoc}
*/
protected function alterRoutes(RouteCollection $collection) {
// Define custom access for '/user/login'.
if ($route = $collection->get('user.login')) {
$route->setRequirement('_custom_access', 'Drupal\example\Access\StandardAccessCheck::access');
}
// Define custom access for '/user/logout'.
if ($route = $collection->get('user.logout')) {
$route->setRequirement('_custom_access', 'example.services_access_checker::access');
}
}
}