smorken / roles
v10.4.3
2024-09-12 18:15 UTC
Requires
- php: ^8.1
- illuminate/auth: ^10.0|^11.0
- illuminate/console: ^10.0|^11.0
- illuminate/routing: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- smorken/controller: ^1.0
- smorken/domain: ^1.0
Requires (Dev)
- fakerphp/faker: ^1.15.0
- larastan/larastan: ^v2.9.8
- laravel/browser-kit-testing: ^7.0
- mockery/mockery: ^1.0
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0|^11.0
- smorken/components: ^1.0
- smorken/docker: *
- dev-master / 10.x-dev
- v10.4.3
- v10.4.2
- v10.4.1
- v10.4.0
- v10.3.3
- v10.3.2
- v10.3.1
- v10.3.0
- v10.2.6
- v10.2.5
- v10.2.4
- v10.2.3
- v10.2.2
- v10.2.1
- v10.2.0
- v10.1.5
- v10.1.4
- v10.1.3
- v10.1.2
- v10.1.1
- v10.1.0
- v10.0.2
- v10.0.1
- v10.0.0
- 9.x-dev
- v9.1.3
- v9.1.2
- v9.1.1
- v9.1
- v9.0
- 8.x-dev
- v8.0.1
- v8.0
- 6.x-dev
- v6.4.1
- v6.4
- v6.3
- v6.2
- v6.1
- v6.0
This package is auto-updated.
Last update: 2024-09-12 18:16:48 UTC
README
许可
此软件是开源软件,根据MIT许可协议授权。
Laravel 框架是开源软件,根据MIT许可协议授权。
要求
- PHP 7.2+
- Composer
安装
将以下内容添加到您的 Laravel 应用 composer.json 文件中
"require": {
"smorken/roles": "^6.0"
}
$ composer update
服务提供器应该会自动注册自己。
如果不自动注册,请将服务提供器添加到 config/app.php
'providers' => [
...
\Smorken\Roles\ServiceProvider::class,
发布所需的文件(如果您打算覆盖它们)
$ php artisan vendor:publish --provider="Smorken\Roles\ServiceProvider" --tag=views #config also available
如果需要不同的初始角色,请编辑 config/roles.php
运行迁移(可能需要再次执行 dump-autoload)
$ php artisan db:seed --class="RoleSeeder"
使用方法
这是一个非常简单的角色扩展集。任何级别较高的角色都将有权访问级别较低的角色。
授权通过 Gates 处理。您可以选择创建自己的 Gates 或使用 Smorken\Roles\ServiceProvider
中的内置静态方法将其添加到 AuthServiceProvider
\App\Providers\AuthServiceProvider
<?php
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
// ...
$this->registerPolicies();
\Smorken\Roles\ServiceProvider::defineGates($this->app);
}
如果您使用默认方法,每个角色都会分配一个名为 "role-[角色代码]" 的 gate。
这些 gates 可以通过 blade 快捷方式在 blade 文件中使用,例如 @can('role-role-code')
,例如 @can('role-super-admin')
。
Gates 可用于路由
<?php
Route::group([
'prefix' => 'admin',
'middleware' => ['auth', 'can:role-admin'],
'namespace' => 'Admin'
],
function () {
});
Gate 门面
<?php
//boolean check
if (Gate::allows('role-manage')) {
}
if (Gate::denies('role-super-admin')) {
}
if (Gate::forUser($user)->allows('role-admin')) {
}
//authorize check (throw AuthorizationException on failure)
Gate::authorize('role-manage');