genealabs / laravel-impersonator
在您的 Laravel 和 Nova 应用中模拟用户。
10.0.0
2023-05-20 20:05 UTC
Requires
- illuminate/config: ^10.0
- illuminate/console: ^10.0
- illuminate/contracts: ^10.0
- illuminate/http: ^10.0
- illuminate/routing: ^10.0
- illuminate/session: ^10.0
- illuminate/support: ^10.0
- illuminate/view: ^10.0
Requires (Dev)
- fakerphp/faker: ^1.9
- laravel/browser-kit-testing: ^7.0
- laravel/nova: ^3.12
- mockery/mockery: ^1.4.4
- nunomaduro/collision: ^7.0
- php-coveralls/php-coveralls: ^2.2
- phpmd/phpmd: ^2.8
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-20 23:04:08 UTC
README
Laravel 模拟器
支持此包
这是一个 MIT 许可的开源项目,其持续开发得以通过社区的支援实现。如果您想支持该项目以及我们的其他包,请考虑在 Patreon 上成为赞助者或支持者。点击此处。
先决条件
- Laravel 8.0+
- PHP 7.3+
安装
composer require genealabs/laravel-impersonator
配置
genealabs-laravel-impersonator.layout
:您的应用程序的 master blade 布局视图(默认layouts.app
)。genealabs-laravel-impersonator.content-section
:master 布局 blade 视图中的内容部分名称(默认content
)。genealabs-laravel-impersonator.user-model
:您的应用程序的用户模型(默认config('auth.providers.users.model')
)。genealabs-laravel-impersonator.middleware
:用于模拟者路由的中间件(默认:['web', 'auth']
)。您可以指定only
或except
参数。例如:['web', 'auth', 'password.confirm' => ['except' => 'destroy']]
如果需要自定义这些设置
php artisan impersonator:publish --config
用法
- 将特质
GeneaLabs\LaravelImpersonator\Traits\Impersonatable
添加到您的用户模型。 - 重写特质方法
public function getCanImpersonateAttribute() : bool
,该方法确定给定的用户是否可以模拟其他用户。 - (可选)重写特质方法
public function getCanBeImpersonatedAttribute() : bool
,该方法确定给定的用户是否可以被模拟。 - 使用
route('impersonatees.index')
查看所有可模拟用户的列表。您可以在菜单中添加以下内容
@if ((auth()->user()->canImpersonate ?? false) && ! session('impersonator')) <a class="dropdown-item" href="{{ route('impersonatees.index') }}">Impersonator</a> @endif
- (可选)在菜单视图中添加以下内容,允许模拟器停止模拟
@if (session('impersonator')) <a href="{{ url('/logout') }}" class="dropdown-item" onclick="event.preventDefault(); document.getElementById('end-personation-session-form').submit();" > End Impersonation Session </a> <form action="{{ route('impersonatees.destroy', auth()->user()) }}" method="POST" style="display: none;" id="end-personation-session-form" > {{ csrf_field () }} {{ method_field ('DELETE') }} </form> @else <a href="{!! route('logout') !!}" class="dropdown-item" onclick="event.preventDefault(); document.getElementById('logout-form').submit();"> Logout </a> <form method="POST" action="{{ route('logout') }}" accept-charset="UTF-8" id="logout-form" style="display:none;" > {{ csrf_field () }} </form> @endif
自定义
php artisan impersonator:publish --views
致谢
在很大程度上受到 LaraCasts 教程的启发和推动: https://laracasts.com/series/how-do-i/episodes/17。感谢 @JeffreyWay!