From df5ea2c5d90b991a03101056f60afed91ea4038e Mon Sep 17 00:00:00 2001 From: Supian M Date: Mon, 25 Nov 2024 14:22:11 +0800 Subject: [PATCH] Allow Impersonation without UI Configuration --- README.md | 19 +++++++++++++++++-- src/Concerns/HasImpersonation.php | 10 ---------- src/Contracts/HasImpersonationUI.php | 16 ++++++++++++++++ src/Providers/ImpersonateServiceProvider.php | 3 ++- tests/Models/User1.php | 3 ++- 5 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 src/Contracts/HasImpersonationUI.php diff --git a/README.md b/README.md index ce879be..097facd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -

Demo

@@ -64,9 +63,25 @@ Add the trait `Octopy\Impersonate\Concerns\HasImpersonation` to your **User** mo namespace App\Models; use Octopy\Impersonate\Concerns\HasImpersonation; -use Illuminate\Foundation\Auth\User as Authenticatable; +use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable +{ + use HasImpersonation; +} + +``` + +If you plan to use the provided UI, add `Octopy\Impersonate\Contracts\HasImpersonationUI` interface to add mandatory configuration for the UI. + +```php +namespace App\Models; + +use Octopy\Impersonate\Concerns\HasImpersonation; +use Octopy\Impersonate\Contracts\HasImpersonationUI; +use Illuminate\Foundation\Auth\User as Authenticatable; + +class User extends Authenticatable implements HasImpersonationUI { use HasImpersonation; diff --git a/src/Concerns/HasImpersonation.php b/src/Concerns/HasImpersonation.php index 661b49e..dd55515 100644 --- a/src/Concerns/HasImpersonation.php +++ b/src/Concerns/HasImpersonation.php @@ -35,16 +35,6 @@ public function impersonate(mixed $impersonated = null) : Impersonate return $manager; } - /** - * @return string[] - */ - abstract public function getImpersonateSearchField() : array; - - /** - * @return string - */ - abstract public function getImpersonateDisplayText() : string; - /** * @param Authorization $authorization * @return void diff --git a/src/Contracts/HasImpersonationUI.php b/src/Contracts/HasImpersonationUI.php new file mode 100644 index 0000000..fd3f431 --- /dev/null +++ b/src/Contracts/HasImpersonationUI.php @@ -0,0 +1,16 @@ +pushMiddlewareToGroup('web', ImpersonateMiddleware::class); $this->loadRoutesFrom( diff --git a/tests/Models/User1.php b/tests/Models/User1.php index dfb91c7..ae05277 100644 --- a/tests/Models/User1.php +++ b/tests/Models/User1.php @@ -7,12 +7,13 @@ use Illuminate\Foundation\Auth\User; use Octopy\Impersonate\Authorization; use Octopy\Impersonate\Concerns\HasImpersonation; +use Octopy\Impersonate\Contracts\HasImpersonationUI; /** * @method static create(string[] $array) * @property string $name */ -class User1 extends User +class User1 extends User implements HasImpersonationUI { use HasImpersonation, SoftDeletes;