From 058d1a0fa816c506d329bae0aad5db85e7635341 Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Fri, 24 Oct 2025 18:04:25 +0200 Subject: [PATCH 1/6] add optional client param to findForPassport function Refactor user retrieval logic to use ReflectionMethod for dynamic argument handling. --- src/Bridge/UserRepository.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Bridge/UserRepository.php b/src/Bridge/UserRepository.php index fb86754a..8fff54d8 100644 --- a/src/Bridge/UserRepository.php +++ b/src/Bridge/UserRepository.php @@ -39,9 +39,17 @@ public function getUserEntityByUserCredentials( return $user ? new User($user->getAuthIdentifier()) : null; } - $user = method_exists($model, 'findForPassport') - ? (new $model)->findForPassport($username) - : (new $model)->where('email', $username)->first(); + $instance = new $model; + if (method_exists($instance, 'findForPassport')) { + $method = new ReflectionMethod($instance, 'findForPassport'); + $args = [$username]; + if ($method->getNumberOfParameters() >= 2) { + $args[] = $client; + } + $user = $method->invokeArgs($instance, $args); + } else { + $user = $instance->where('email', $username)->first(); + } if (! $user) { return null; From 273b7146900a03e3401a0cbd03b20612aa647641 Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Fri, 24 Oct 2025 18:42:26 +0200 Subject: [PATCH 2/6] hotfix --- src/Bridge/UserRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Bridge/UserRepository.php b/src/Bridge/UserRepository.php index 8fff54d8..5911762e 100644 --- a/src/Bridge/UserRepository.php +++ b/src/Bridge/UserRepository.php @@ -44,7 +44,7 @@ public function getUserEntityByUserCredentials( $method = new ReflectionMethod($instance, 'findForPassport'); $args = [$username]; if ($method->getNumberOfParameters() >= 2) { - $args[] = $client; + $args[] = $clientEntity; } $user = $method->invokeArgs($instance, $args); } else { From bb08e2e397dd5a5642ac4639e6b23477255c4618 Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Fri, 24 Oct 2025 19:21:06 +0200 Subject: [PATCH 3/6] Add ReflectionMethod import to UserRepository --- src/Bridge/UserRepository.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Bridge/UserRepository.php b/src/Bridge/UserRepository.php index 5911762e..b4e9df3e 100644 --- a/src/Bridge/UserRepository.php +++ b/src/Bridge/UserRepository.php @@ -7,6 +7,7 @@ use League\OAuth2\Server\Entities\UserEntityInterface; use League\OAuth2\Server\Repositories\UserRepositoryInterface; use RuntimeException; +use ReflectionMethod; class UserRepository implements UserRepositoryInterface { From 247d7e2e8af00b60888f6fa9ced25508023c5103 Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Fri, 24 Oct 2025 19:23:21 +0200 Subject: [PATCH 4/6] Move RuntimeException import --- src/Bridge/UserRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Bridge/UserRepository.php b/src/Bridge/UserRepository.php index b4e9df3e..eafcce52 100644 --- a/src/Bridge/UserRepository.php +++ b/src/Bridge/UserRepository.php @@ -6,8 +6,8 @@ use League\OAuth2\Server\Entities\ClientEntityInterface; use League\OAuth2\Server\Entities\UserEntityInterface; use League\OAuth2\Server\Repositories\UserRepositoryInterface; -use RuntimeException; use ReflectionMethod; +use RuntimeException; class UserRepository implements UserRepositoryInterface { From 20bb450572634fb19c89ddf087fb25c6e0a1eed6 Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Fri, 24 Oct 2025 20:14:15 +0200 Subject: [PATCH 5/6] Update src/Bridge/UserRepository.php Co-authored-by: Hafez Divandari --- src/Bridge/UserRepository.php | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/Bridge/UserRepository.php b/src/Bridge/UserRepository.php index eafcce52..09144578 100644 --- a/src/Bridge/UserRepository.php +++ b/src/Bridge/UserRepository.php @@ -40,17 +40,9 @@ public function getUserEntityByUserCredentials( return $user ? new User($user->getAuthIdentifier()) : null; } - $instance = new $model; - if (method_exists($instance, 'findForPassport')) { - $method = new ReflectionMethod($instance, 'findForPassport'); - $args = [$username]; - if ($method->getNumberOfParameters() >= 2) { - $args[] = $clientEntity; - } - $user = $method->invokeArgs($instance, $args); - } else { - $user = $instance->where('email', $username)->first(); - } + $user = method_exists($model, 'findForPassport') + ? (new $model)->findForPassport($username, $clientEntity) + : (new $model)->where('email', $username)->first(); if (! $user) { return null; From 6bd5c8013e3a9f1ccbc9730126bfabffb3042874 Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Fri, 24 Oct 2025 20:15:24 +0200 Subject: [PATCH 6/6] Add clientEntity parameter to findAndValidateForPassport --- src/Bridge/UserRepository.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Bridge/UserRepository.php b/src/Bridge/UserRepository.php index 09144578..2eaa747b 100644 --- a/src/Bridge/UserRepository.php +++ b/src/Bridge/UserRepository.php @@ -6,7 +6,6 @@ use League\OAuth2\Server\Entities\ClientEntityInterface; use League\OAuth2\Server\Entities\UserEntityInterface; use League\OAuth2\Server\Repositories\UserRepositoryInterface; -use ReflectionMethod; use RuntimeException; class UserRepository implements UserRepositoryInterface @@ -35,7 +34,7 @@ public function getUserEntityByUserCredentials( } if (method_exists($model, 'findAndValidateForPassport')) { - $user = (new $model)->findAndValidateForPassport($username, $password); + $user = (new $model)->findAndValidateForPassport($username, $password, $clientEntity); return $user ? new User($user->getAuthIdentifier()) : null; }