Prüfen, ob ein Benutzer Zugang zu einer Route hat

Geschrieben von patrick am Mi., 08.03.2017 - 08:42 Uhr

Falls Sie überprüfen möchten, ob ein Benutzer Zugang zu einer Route hat, können Sie die Methode checkNamedRoute des AccessManagers verwenden. Dazu benötigen Sie den Namen der Route, die Parameter der Route und ein AccountInterface-Objekt. Diese können Sie aus einem Route-Objekt abrufen oder direkt angeben.

$access_manager = \Drupal::service('access_manager'); 
$has_access = $access_manager->checkNamedRoute($route_name, $route_parameters, $account);

Wenn Sie beispielsweise überprüfen möchten, ob der aktuelle Benutzer Zugang zur Einzelansicht des Nodes mit der Node Id 9 hat, würde das ungefähr so aussehen:

$access_manager = \Drupal::service('access_manager'); 
$has_access = $access_manager->checkNamedRoute('entity.node.canonical', ['node' => 8], \Drupal::currentUser());

Falls Sie lieber ein AccessResult-Objekt anstatt von TRUE oder FALSE als Rückgabewert erhalten möchten, gibt es einen dritten Parameter, den Sie auf TRUE setzen können.

Systeme
Drupal 8/9