chadhurin/laravel-masquerade

使用强大的 Laravel Masquerade 包提升您的用户管理体验。该包专为与 Laravel 应用程序无缝集成而设计,使管理员能够临时切换并从另一个用户的视角查看应用程序。无论是调试、测试用户体验还是验证权限,我们的 Masquerade 包都能简化流程。

v1.0.0 2023-08-31 23:12 UTC

This package is auto-updated.

Last update: 2024-09-30 02:08:04 UTC


README

Latest Version on Packagist Total Downloads

使用强大的 Laravel Masquerade 包提升您的用户管理体验。该包专为与 Laravel 应用程序无缝集成而设计,使管理员能够临时切换并从另一个用户的视角查看应用程序。无论是调试、测试用户体验还是验证权限,我们的 Masquerade 包都能简化流程。

主要功能

  • 轻松切换用户:快速安全地切换到应用程序内的任何用户账户。
  • 真实用户体验:以所选用户的视角体验应用程序,深入了解。
  • 高级权限测试:轻松验证和排除用户权限问题。
  • 开发者友好:直观的设置和配置,轻松集成到现有 Laravel 项目中。

灵感

此包受到 laravel-impersonate 包中出色工作的启发。我们认识到它对社区的价值,并致力于在此基础上进行改进,同时添加了我们独特的功能,特别是对 Laravel Sanctum 的支持。我们需要快速添加对 Sanctum 的支持,因此省略了一些其他功能。我们希望将来能够添加它们。

要求

  • Laravel 10.x
  • PHP >= 8.0

安装

您可以通过 composer 安装此包

composer require chadhurin/laravel-masquerade

然后,将特质 Chadhurin\LaravelMasquerade\Traits\Masquerade 添加到您的 User 模型中。

用法

简单用法

伪装用户

Auth::user()->masquerade($other_user);
// You're now logged as the $other_user

离开伪装

Auth::user()->leaveMasquerade();
// You're now logged as your original user.

使用内置控制器

在您的路由文件中,在 web 中间件下,您必须调用 masquerade 路由宏。

Route::masquerade();

高级用法

定义伪装授权

默认情况下,所有用户都可以 伪装 用户。
您需要将方法 canMasquerade() 添加到您的用户模型中

    /**
     * @return bool
     */
    public function canMasquerade(): bool
    {
        return $this->hasRole('super-admin');
        // For example, you can check if the user has a specific role.
    }

默认情况下,所有用户都可以 被伪装
您需要将方法 canBeMasqueraded() 添加到您的用户模型中,以扩展此行为

    /**
     * @return bool
     */
     public function canBeMasqueraded():bool
    {
        return !$this->hasRole('super-admin')
        && $this->can_be_masqueraded;
        // For example, you can check if the user has a specific role and if the user has a flag on the users table
    }

配置

该包附带一个配置文件。

使用以下命令发布它

php artisan vendor:publish --tag=masquerade

可用选项

'take_redirect_to' => '/',
'leave_redirect_to' => '/'

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件 chadhurin@gmail.com 而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件

Laravel 包模板

此包是使用 Laravel 包模板 生成的。