From 9dc2685f1cfcd6d4dc3f8b6756cf9d3afed11337 Mon Sep 17 00:00:00 2001 From: its Date: Mon, 24 Oct 2022 20:02:31 +0200 Subject: [PATCH] Laravel - improved compatibility when resolving authenticated user. --- Clockwork/DataSource/LaravelDataSource.php | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Clockwork/DataSource/LaravelDataSource.php b/Clockwork/DataSource/LaravelDataSource.php index 5d550a90..22b7a162 100644 --- a/Clockwork/DataSource/LaravelDataSource.php +++ b/Clockwork/DataSource/LaravelDataSource.php @@ -201,15 +201,23 @@ protected function resolveAuthenticatedUser(Request $request) if (! isset($this->app['auth'])) return; if (! ($user = $this->app['auth']->user())) return; - // retrieve attributes in this awkward way to make sure we don't trigger exceptions with Eloquent strict mode on - $keyName = $user->getKeyName(); - $user = $user->getAttributes(); - - if (! isset($user['email']) || ! isset($user[$keyName])) return; + if ($user instanceof \Illuminate\Database\Eloquent\Model) { + // retrieve attributes in this awkward way to make sure we don't trigger exceptions with Eloquent strict mode on + $keyName = method_exists($user, 'getAuthIdentifierName') ? $user->getAuthIdentifierName() : $user->getKeyName(); + $user = $user->getAttributes(); + + $userId = isset($user[$keyName]) ? $user[$keyName] : null; + $userEmail = isset($user['email']) ? $user['email'] : $userId; + $userName = isset($user['name']) ? $user['name'] : null; + } else { + $userId = $user->getAuthIdentifier(); + $userEmail = isset($user->email) ? $user->email : $userId; + $userName = isset($user->name) ? $user->name : null; + } - $request->setAuthenticatedUser($user['email'], $user[$keyName], [ - 'email' => $user['email'], - 'name' => isset($user['name']) ? $user['name'] : null + $request->setAuthenticatedUser($userEmail, $userId, [ + 'email' => $userEmail, + 'name' => $userName ]); } }