beranidigital/filament-access

为 Laravel Filament 提供多面板细粒度权限,用于分析、生成并注入应用中所有类和方法。或者 whatever that means。

0.2.1 2024-07-05 09:46 UTC

This package is auto-updated.

Last update: 2024-09-08 17:05:13 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

为 Laravel Filament 提供多面板超细粒度权限,用于分析、生成并注入应用中所有类和方法。

此包的功能

  • 生成几乎所有 Filament 组件权限的列表
  • 自动重定义类以避免冲突

为什么我需要这个包

  • 你有太多的类和方法需要逐一定义权限
  • 默认 Filament 授权不支持多面板

此包不做什么

  • 它不提供完整的授权解决方案
  • 它不是为了自定义定义权限,你需要自己定义

安装

您可以通过 composer 安装此包

composer require beranidigital/filament-access

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="filament-access-config"

使用方法

\BeraniDigitalID\FilamentAccess\Facades\FilamentAccess::analyzeAll();

php artisan filament-access:generate
php artisan filament-access:hijack

工作原理

  1. 它通过钩入一个类来修正权限
  2. 该类将调用 Gate::authorize('viewAny', $correctArgument),其中 App\Filament\Resources\MyResource 作为参数的示例
  3. 您可以使用自己的自定义逻辑进行授权
\Illuminate\Support\Facades\Gate::before(function ($user, $ability, $arguments) {
    $permission = \BeraniDigitalID\FilamentAccess\Facades\FilamentAccess::determinePermissionName($ability, $arguments);
    if (!$user->hasPermissionTo($permission)) {
        return false;
    }
    // continue to the next authorization logic
});

变更日志

请参阅 CHANGELOG 了解最近的变化。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请审查 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。