From 4af416889505e017617fdf60b9cc466fba19bf08 Mon Sep 17 00:00:00 2001 From: webard Date: Wed, 7 Jan 2026 13:03:20 +0000 Subject: [PATCH 1/7] allow UnitEnum in has() method of Gate class --- src/Illuminate/Auth/Access/Gate.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Illuminate/Auth/Access/Gate.php b/src/Illuminate/Auth/Access/Gate.php index 2341efd8109d..c9713a060981 100644 --- a/src/Illuminate/Auth/Access/Gate.php +++ b/src/Illuminate/Auth/Access/Gate.php @@ -4,19 +4,20 @@ use Closure; use Exception; -use Illuminate\Auth\Access\Events\GateEvaluated; -use Illuminate\Contracts\Auth\Access\Gate as GateContract; -use Illuminate\Contracts\Container\Container; -use Illuminate\Contracts\Events\Dispatcher; -use Illuminate\Database\Eloquent\Attributes\UsePolicy; +use ReflectionClass; +use ReflectionFunction; use Illuminate\Support\Arr; -use Illuminate\Support\Collection; use Illuminate\Support\Str; use InvalidArgumentException; -use ReflectionClass; -use ReflectionFunction; - +use Illuminate\Support\Collection; use function Illuminate\Support\enum_value; +use Illuminate\Contracts\Events\Dispatcher; +use Illuminate\Contracts\Container\Container; +use Illuminate\Auth\Access\Events\GateEvaluated; +use Illuminate\Database\Eloquent\Attributes\UsePolicy; + +use Illuminate\Tests\JsonSchema\Fixtures\Enums\UnitEnum; +use Illuminate\Contracts\Auth\Access\Gate as GateContract; class Gate implements GateContract { @@ -117,7 +118,7 @@ public function __construct( /** * Determine if a given ability has been defined. * - * @param string|array $ability + * @param string|UnitEnum|array $ability * @return bool */ public function has($ability) @@ -125,7 +126,7 @@ public function has($ability) $abilities = is_array($ability) ? $ability : func_get_args(); foreach ($abilities as $ability) { - if (! isset($this->abilities[$ability])) { + if (! isset($this->abilities[enum_value($ability)])) { return false; } } From 6c4abc969491a5aa037fcaa3f6ec343f3b6d3382 Mon Sep 17 00:00:00 2001 From: webard Date: Wed, 7 Jan 2026 13:06:36 +0000 Subject: [PATCH 2/7] wip --- src/Illuminate/Contracts/Auth/Access/Gate.php | 2 +- src/Illuminate/Support/Facades/Gate.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Contracts/Auth/Access/Gate.php b/src/Illuminate/Contracts/Auth/Access/Gate.php index 29ab2377d9c9..dd43d69a50c6 100644 --- a/src/Illuminate/Contracts/Auth/Access/Gate.php +++ b/src/Illuminate/Contracts/Auth/Access/Gate.php @@ -7,7 +7,7 @@ interface Gate /** * Determine if a given ability has been defined. * - * @param string $ability + * @param \UnitEnum|string $ability * @return bool */ public function has($ability); diff --git a/src/Illuminate/Support/Facades/Gate.php b/src/Illuminate/Support/Facades/Gate.php index e5ae37c09e4c..37cb11be740a 100644 --- a/src/Illuminate/Support/Facades/Gate.php +++ b/src/Illuminate/Support/Facades/Gate.php @@ -5,7 +5,7 @@ use Illuminate\Contracts\Auth\Access\Gate as GateContract; /** - * @method static bool has(string|array $ability) + * @method static bool has(\UnitEnum|string|array $ability) * @method static \Illuminate\Auth\Access\Response allowIf(\Illuminate\Auth\Access\Response|\Closure|bool $condition, string|null $message = null, string|null $code = null) * @method static \Illuminate\Auth\Access\Response denyIf(\Illuminate\Auth\Access\Response|\Closure|bool $condition, string|null $message = null, string|null $code = null) * @method static \Illuminate\Auth\Access\Gate define(\UnitEnum|string $ability, callable|array|string $callback) From eeadaca233e907688248cdf330e7d59e04cb70d9 Mon Sep 17 00:00:00 2001 From: webard Date: Wed, 7 Jan 2026 13:10:49 +0000 Subject: [PATCH 3/7] fix --- src/Illuminate/Auth/Access/Gate.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Auth/Access/Gate.php b/src/Illuminate/Auth/Access/Gate.php index c9713a060981..8def9e937bff 100644 --- a/src/Illuminate/Auth/Access/Gate.php +++ b/src/Illuminate/Auth/Access/Gate.php @@ -10,7 +10,6 @@ use Illuminate\Support\Str; use InvalidArgumentException; use Illuminate\Support\Collection; -use function Illuminate\Support\enum_value; use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Contracts\Container\Container; use Illuminate\Auth\Access\Events\GateEvaluated; @@ -19,6 +18,9 @@ use Illuminate\Tests\JsonSchema\Fixtures\Enums\UnitEnum; use Illuminate\Contracts\Auth\Access\Gate as GateContract; +use function Illuminate\Support\enum_value; + + class Gate implements GateContract { use HandlesAuthorization; From afa6d17d92883e98eff2814f7eb5b7b12725e706 Mon Sep 17 00:00:00 2001 From: webard Date: Wed, 7 Jan 2026 13:11:12 +0000 Subject: [PATCH 4/7] fix --- src/Illuminate/Auth/Access/Gate.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/Illuminate/Auth/Access/Gate.php b/src/Illuminate/Auth/Access/Gate.php index 8def9e937bff..c2f65b899c0d 100644 --- a/src/Illuminate/Auth/Access/Gate.php +++ b/src/Illuminate/Auth/Access/Gate.php @@ -4,19 +4,17 @@ use Closure; use Exception; -use ReflectionClass; -use ReflectionFunction; +use Illuminate\Auth\Access\Events\GateEvaluated; +use Illuminate\Contracts\Auth\Access\Gate as GateContract; +use Illuminate\Contracts\Container\Container; +use Illuminate\Contracts\Events\Dispatcher; +use Illuminate\Database\Eloquent\Attributes\UsePolicy; use Illuminate\Support\Arr; +use Illuminate\Support\Collection; use Illuminate\Support\Str; use InvalidArgumentException; -use Illuminate\Support\Collection; -use Illuminate\Contracts\Events\Dispatcher; -use Illuminate\Contracts\Container\Container; -use Illuminate\Auth\Access\Events\GateEvaluated; -use Illuminate\Database\Eloquent\Attributes\UsePolicy; - -use Illuminate\Tests\JsonSchema\Fixtures\Enums\UnitEnum; -use Illuminate\Contracts\Auth\Access\Gate as GateContract; +use ReflectionClass; +use ReflectionFunction; use function Illuminate\Support\enum_value; From 1ea9e711f782c36634894ec16c897055706a36f0 Mon Sep 17 00:00:00 2001 From: webard Date: Wed, 7 Jan 2026 13:12:17 +0000 Subject: [PATCH 5/7] use UnitEnum --- src/Illuminate/Auth/Access/Gate.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Auth/Access/Gate.php b/src/Illuminate/Auth/Access/Gate.php index c2f65b899c0d..d14713f905e8 100644 --- a/src/Illuminate/Auth/Access/Gate.php +++ b/src/Illuminate/Auth/Access/Gate.php @@ -15,6 +15,7 @@ use InvalidArgumentException; use ReflectionClass; use ReflectionFunction; +use UnitEnum; use function Illuminate\Support\enum_value; From 1076bfc2a894ba8b888c951bf775211c3a5383d6 Mon Sep 17 00:00:00 2001 From: webard Date: Wed, 7 Jan 2026 13:14:22 +0000 Subject: [PATCH 6/7] revert use UnitEnum --- src/Illuminate/Auth/Access/Gate.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Illuminate/Auth/Access/Gate.php b/src/Illuminate/Auth/Access/Gate.php index d14713f905e8..1eb4a226f6d8 100644 --- a/src/Illuminate/Auth/Access/Gate.php +++ b/src/Illuminate/Auth/Access/Gate.php @@ -15,11 +15,9 @@ use InvalidArgumentException; use ReflectionClass; use ReflectionFunction; -use UnitEnum; use function Illuminate\Support\enum_value; - class Gate implements GateContract { use HandlesAuthorization; @@ -119,7 +117,7 @@ public function __construct( /** * Determine if a given ability has been defined. * - * @param string|UnitEnum|array $ability + * @param string|\UnitEnum|array $ability * @return bool */ public function has($ability) From da606be1bc139f2bfb29ca2e87c8925a1c94f0d9 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Wed, 7 Jan 2026 08:56:51 -0600 Subject: [PATCH 7/7] Update Gate.php --- src/Illuminate/Auth/Access/Gate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Auth/Access/Gate.php b/src/Illuminate/Auth/Access/Gate.php index 1eb4a226f6d8..eea0617a2a73 100644 --- a/src/Illuminate/Auth/Access/Gate.php +++ b/src/Illuminate/Auth/Access/Gate.php @@ -117,7 +117,7 @@ public function __construct( /** * Determine if a given ability has been defined. * - * @param string|\UnitEnum|array $ability + * @param \UnitEnum|array|string $ability * @return bool */ public function has($ability)