banityt/laravel-impersonate

v0.0.2 2019-02-13 03:04 UTC

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