fxmonster / brandenburg
Laravel 认证包
Requires
- php: >=7.3
- laravel/framework: ^8.0 | ^9.0 | ^10.0
Requires (Dev)
- mockery/mockery: ^1.3.1
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-23 09:27:43 UTC
README
Laravel 授权包
这是一个有偏见的授权包,旨在与标准 Laravel Gates 紧密集成。它与其他授权包不同,因为它使用在 gate policies 中硬编码的权限,而不是在数据库中重复它们。
简而言之;此包为用户提供角色,这些角色可以授予访问权限(Laravel Gates)。
包维护
不幸的是,我不再积极从事 Laravel 生态系统的工作,因此无法维护此包。如果有人想接管此包的维护,请与我联系(打开问题或通过 Twitter 联系我)。
版本兼容性
安装
composer require silvanite/brandenburg
此包在 Laravel 5.5 中使用自动加载服务提供者和 BrandenburgPolicy Facade。
对于 Laravel 5.1 - 5.4,请加载服务提供者和 Facade。
// config/app.php 'providers' => [ ... Silvanite\Brandenburg\Providers\BrandenburgServiceProvider::class, ]; 'aliases' => [ ... 'BrandenburgPolicy' => Silvanite\Brandenburg\Facades\PolicyFacade::class, ],
需要三个额外的表来启用用户角色。这些表将在运行迁移时自动安装。请参阅此存储库源代码中的迁移,以获取有关创建的表详情。
php artisan migrate
如果您不打算使用 Brandenburg 的默认迁移,应在配置文件中更改 ignoreMigrations 选项。您可以使用以下方式导出默认迁移:
php artisan vendor:publish --tag=brandenburg-config
用法
此包提供两个特质。主要特质适用于您的用户模型,启用了模型关系。
use Silvanite\Brandenburg\Traits\HasRoles; class User { use HasRoles; ... }
第二个特质 ValidatesPermissions 可选地可用于您的 AuthServiceProvider 中编写 Gates。它可以用作阻止用户被锁定,或者通过允许访问没有用户在系统中被授予访问权限的权限,来使某些权限可选。
// AuthServiceProvider.php if ($this->nobodyHasAccess('create-articles')) { return true; }; // Check if the user has access ...
创建角色
使用 Silvanite\Brandenburg\Role 模型创建和管理用户角色。
$editor = Silvanite\Brandenburg\Role::create([ 'name' => 'Editor', 'slug' => 'editor', ]);
创建权限
应用程序中定义的所有 Gates 都将自动作为权限可用,无需在数据库中专门创建它们。请参阅 Laravel Gates 文档 以获取更多信息。
管理角色和权限
所有权限都是通过提供由您的 Gate 定义的键来分配的。它们可以被授予和撤销。
// Grant access $editor->grant('create-articles'); // Revoke access $editor->revoke('create-articles');
一些额外的辅助方法提供了一种方便的管理权限的方式。
// Grant access to a set of permissions and remove all other permissions $editor->setPermissions([ 'create-articles', 'read-articles', 'update-articles', 'delete-articles', ]); // Revoke all permissions $editor->revokeAll();
您可以通过访问 permissions 属性来查看特定角色具有哪些权限。
$editorPermissions = $editor->permissions; // returns ['create-articles', 'read-articles', 'update-articles', 'delete-articles']
分配/移除角色
可以直接从用户模型中分配/移除角色(前提是使用了 HasRoles 特质)。您可以传递 Role 模型或角色的 slug。
// Using slug $user->assignRole('editor'); $user->removeRole('editor'); // Using model use Silvanite\Brandenburg\Role; $user->assignRole(Role::first()); $user->removeRole(Role::first());
还有一个辅助方法来同步角色(或者您可以简单地使用 eloquent 关系本身)。
$user->setRolesById([1, 3, 4]); // Same as $user->roles()->sync([1, 3, 4]);
验证访问权限
在您的 Gate 定义中,您可以验证特定用户是否有权访问特定权限,这将是基于用户角色的。
$canCreateArticle = $user->hasRoleWithPermission('create-articles');
在您的 Gate 定义之外,您应使用标准的 Laravel Gate 方法和方法来检查用户是否有访问权限。请参阅 Laravel 文档 以获取更多详细信息。
贡献
- 分叉它!
- 创建您的特性分支:
git checkout -b my-new-feature - 提交您的更改:
git commit -am '添加一些功能' - 运行测试:
./vendor/bin/phpunit - 将分支推送到远程:
git push origin my-new-feature - 提交拉取请求
支持
如果您需要任何支持,请通过 Twitter 联系我或在此次仓库中创建一个 issues。
许可证
GPL