banityt / laravel-impersonate
v0.0.2
2019-02-13 03:04 UTC
Requires
- php: ^7.1.3
- laravel/laravel: >=5.6
This package is auto-updated.
Last update: 2024-10-05 17:37:52 UTC
README
Impersonate with multi auth guard support.
Install
composer require banityt/laravel-impersonate
Setup
- Implements Impersonatable Contract and use Impersonatable Trait in your user model.
use BaniTo\Impersonate\Contracts\Impersonatable as ImpersonatableContract; use BaniTo\Impersonate\Traits\Impersonatable as ImpersonatableTrait; class User extends Authenticatable implements ImpersonatableContract { use ImpersonatableTrait; //... }
- Set your guard name in your user model
public function guardName() { return 'web'; // or any custom guard name specified in config/auth.php }
- (Optional) You can customize your impersonation related rights
public function canImpersonate() : bool { return Bouncer::can('users_impersonate'); } public function canBeImpersonated() : bool { return !Bouncer::is('admin'); }
Usage
Through user model or facade
use Impersonate; // Impersonate other user, can be another user with other guard auth()->user()->impersonate($anotherUser); Auth::user()->impersonate($otherGuardUser); Impersonate::impersonate($impersonator, $beingImpersonated); // Stop impersonating auth()->user()->stopImpersonating(); Auth::user()->stopImpersonating(); Impersonate::stopImpersonating();
Check if user is impersonating
auth()->user()->isImpersonating(); Auth::user()->isImpersonating(); Impersonate::isImpersonating(); // blade example @if (Impersonate::isImpersonating()) <a href="{{route('your.route.impersonate.stop')}}">{{__('Stop Impersonation')}}</a> @endif