core/lib/Drupal/Core/Access/AccessResult.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/core/lib/Drupal/Core/Access/AccessResult.php b/core/lib/Drupal/Core/Access/AccessResult.php index 143361e..eaa2450 100644 --- a/core/lib/Drupal/Core/Access/AccessResult.php +++ b/core/lib/Drupal/Core/Access/AccessResult.php @@ -114,7 +114,7 @@ public static function allowedIfHasPermission(AccountInterface $account, $permis $access_result = static::allowedIf($account->hasPermission($permission))->addCacheContexts(['user.permissions']); if ($access_result instanceof AccessResultReasonInterface) { - $access_result->setReason("The {$permission} permission is required."); + $access_result->setReason("The '$permission' permission is required."); } return $access_result; } @@ -157,7 +157,21 @@ public static function allowedIfHasPermissions(AccountInterface $account, array } } - return static::allowedIf($access)->addCacheContexts(empty($permissions) ? [] : ['user.permissions']); + $access_result = static::allowedIf($access)->addCacheContexts(empty($permissions) ? [] : ['user.permissions']); + + if ($access_result instanceof AccessResultReasonInterface) { + if (count($permissions) === 1) { + $access_result->setReason("The '$permission' permission is required."); + } + else { + $quote = function ($s) { + return "'$s'"; + }; + $access_result->setReason(sprintf("The following permissions are required: %s.", implode(" $conjunction ", array_map($quote, $permissions)))); + } + } + + return $access_result; } /**