amdad121/ guard-laravel
Guard 是 Laravel 的角色和权限管理系统
v0.3.0
2024-03-14 17:14 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
Guard 是 Laravel 的角色和权限管理系统
安装
您可以通过 composer 安装此包
composer require amdad121/guard-laravel
您可以使用以下命令发布并运行迁移
php artisan vendor:publish --tag="guard-laravel-migrations"
php artisan migrate
在用户模型上添加 HasRoles
特性和 UserContract
接口
namespace App\Models; use AmdadulHaq\Guard\Contracts\User as UserContract; use AmdadulHaq\Guard\HasRoles; # ... class User extends Authenticatable implements UserContract { use HasRoles; }
用法
创建角色
use AmdadulHaq\Guard\Models\Role; Role::create(['name' => 'administrator']);
创建权限
use AmdadulHaq\Guard\Models\Permission; use AmdadulHaq\Guard\Models\Role; $items = [ 'role' => ['viewAny', 'view', 'create', 'update', 'delete', 'restore', 'forceDelete'], 'permission' => ['viewAny', 'view', 'create', 'update', 'delete'], ]; $role = Role::first(); foreach ($items as $group => $names) { foreach ($names as $name) { $permission = Permission::create(['name' => $group.'.'.$name]); $role->givePermissionTo($permission); } }
分配角色和权限
use AmdadulHaq\Guard\Models\Permission; use AmdadulHaq\Guard\Models\Role; use App\Models\User; $user = User::first(); $role = Role::first(); // Assign role $user->assignRole($role); $permission = Permission::first(); // Assign permission $role->givePermissionTo($permission);
撤销角色和权限
use AmdadulHaq\Guard\Models\Permission; use AmdadulHaq\Guard\Models\Role; use App\Models\User; $user = User::first(); $role = Role::first(); // Revoke role $user->revokeRole($role); $permission = Permission::first(); // Revoke permission $role->revokePermissionTo($permission);
检查角色和权限
use AmdadulHaq\Guard\Models\Permission; use AmdadulHaq\Guard\Models\Role; use App\Models\User; $user = User::first(); $role = Role::first(); // Role check $user->hasRole($role->name) // true or false $permission = Permission::first(); // Permission check $user->hasPermission($permission); // true or false
您可以使用多种方式,以下是一些示例
use Illuminate\Support\Facades\Gate; // for permission Gate::authorize('role.show'); // for role Gate::authorize('administrator');
// for permission $this->authorize('role.show'); // for role $this->authorize('administrator');
use Illuminate\Support\Facades\Route; // for permission Route::get('/', function () { // ... })->middleware('can:role.show'); // for role Route::get('/', function () { // ... })->middleware('can:administrator');
// for permission @can('role.show') It's works @endcan // for role @can('administrator') It's works @endcan
测试
composer test
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅许可文件。