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-09-05 17:29:55 UTC
README
支持多认证守卫的模拟用户。
安装
composer require banityt/laravel-impersonate
设置
- 实现 Impersonatable 合约并在用户模型中使用 Impersonatable 特性。
use BaniTo\Impersonate\Contracts\Impersonatable as ImpersonatableContract; use BaniTo\Impersonate\Traits\Impersonatable as ImpersonatableTrait; class User extends Authenticatable implements ImpersonatableContract { use ImpersonatableTrait; //... }
- 在用户模型中设置您的守卫名称
public function guardName() { return 'web'; // or any custom guard name specified in config/auth.php }
- (可选) 您可以自定义模拟相关的权限
public function canImpersonate() : bool { return Bouncer::can('users_impersonate'); } public function canBeImpersonated() : bool { return !Bouncer::is('admin'); }
用法
通过用户模型或外观
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();
检查用户是否正在模拟
auth()->user()->isImpersonating(); Auth::user()->isImpersonating(); Impersonate::isImpersonating(); // blade example @if (Impersonate::isImpersonating()) <a href="{{route('your.route.impersonate.stop')}}">{{__('Stop Impersonation')}}</a> @endif