From 429262a84414569be2fad1fad417f05d752c075b Mon Sep 17 00:00:00 2001 From: Joseph Silber Date: Tue, 8 Dec 2020 10:31:20 -0500 Subject: [PATCH] Don't crash with non-standard auth configs Fixes #527 --- src/BouncerServiceProvider.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/BouncerServiceProvider.php b/src/BouncerServiceProvider.php index 31b593dc..bda1d5fe 100644 --- a/src/BouncerServiceProvider.php +++ b/src/BouncerServiceProvider.php @@ -10,6 +10,7 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Contracts\Auth\Access\Gate; use Illuminate\Database\Eloquent\Relations\Relation; +use Illuminate\Database\Eloquent\Model as EloquentModel; class BouncerServiceProvider extends ServiceProvider { @@ -118,13 +119,15 @@ protected function publishMigrations() */ protected function setUserModel() { - Models::setUsersModel($this->getUserModel()); + if ($model = $this->getUserModel()) { + Models::setUsersModel($model); + } } /** * Get the user model from the application's auth config. * - * @return string + * @return string|null */ protected function getUserModel() { @@ -138,7 +141,14 @@ protected function getUserModel() return null; } - return $config->get("auth.providers.{$provider}.model"); + $model = $config->get("auth.providers.{$provider}.model"); + + // The standard auth config that ships with Laravel references the + // Eloquent User model in the above config path. However, users + // are free to reference anything there - so we check first. + if (is_subclass_of($model, EloquentModel::class)) { + return $model; + } } /**