From f812be0deffb713bd180caa4d5e6a4ea6ad35de4 Mon Sep 17 00:00:00 2001
From: catch <catch@35733.no-reply.drupal.org>
Date: Wed, 1 Feb 2023 09:56:06 +0000
Subject: [PATCH] Issue #3087868 by Charlie ChX Negyesi, Wim Leers, joachim,
 smustgrave: Make the AccessResult API even clearer

---
 .../Drupal/Core/Access/AccessResultInterface.php   | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/core/lib/Drupal/Core/Access/AccessResultInterface.php b/core/lib/Drupal/Core/Access/AccessResultInterface.php
index 199ef3c22703..e912acb07894 100644
--- a/core/lib/Drupal/Core/Access/AccessResultInterface.php
+++ b/core/lib/Drupal/Core/Access/AccessResultInterface.php
@@ -23,6 +23,9 @@ interface AccessResultInterface {
   /**
    * Checks whether this access result indicates access is explicitly allowed.
    *
+   * Call this method to check whether someone has access, to convert an access
+   * result object to boolean.
+   *
    * @return bool
    *   When TRUE then isForbidden() and isNeutral() are FALSE.
    */
@@ -31,8 +34,13 @@ public function isAllowed();
   /**
    * Checks whether this access result indicates access is explicitly forbidden.
    *
-   * This is a kill switch — both orIf() and andIf() will result in
-   * isForbidden() if either results are isForbidden().
+   * Call this when optimizing an access checker (for hook_entity_access() or a
+   * route requirement): if this is TRUE, the final result will be forbidden and
+   * no further checking is necessary.
+   *
+   * Do not use this method to decide whether someone has access, to convert an
+   * access result to boolean: just because this returns FALSE, the end result
+   * might be neutral which is not allowed. Always use isAllowed() for this.
    *
    * @return bool
    *   When TRUE then isAllowed() and isNeutral() are FALSE.
@@ -44,6 +52,8 @@ public function isForbidden();
    *
    * @return bool
    *   When TRUE then isAllowed() and isForbidden() are FALSE.
+   *
+   * @internal
    */
   public function isNeutral();
 
-- 
GitLab