4msar / laravel-role-manager
Laravel 角色管理器。
Requires
- php: >=7.2
This package is auto-updated.
Last update: 2024-09-20 22:13:37 UTC
README
安装
此包可用于 Laravel 5.4 或更高版本。您可以通过 composer 安装此包。
composer require 4msar/laravel-role-manager
在 Laravel 5.5 中,服务提供者将自动注册。在框架的旧版本中,只需将服务提供者添加到 config/app.php
文件中。
'providers' => [ // ... MSAR\RoleManager\RoleManagerServiceProvider::class, ];
您可以使用以下命令发布迁移和配置文件:
php artisan vendor:publish --provider="MSAR\RoleManager\RoleManagerServiceProvider"
迁移发布后,您可以通过运行迁移来创建角色和权限表。
php artisan migrate
发布时,config/role_manager.php
配置文件包含以下内容:
return [ /** * Permission List * Here, you can declare your needed permission, the package will be add this permission automatically * to the database( via middle-ware). * key name is the permission name and value is the details name showing for management. */ "add_permission_dynamically" => false, // Make true if you want to add permission from bellow permissions array "permissions" => [ // 'permission_name' => 'permission_details' 'view_home' => 'View Admin Dashboard', 'view_users' => 'View Admin Users', ], 'unauthorized_action' => '', 'unauthorized_action_type' => [ 'route' => [ 'name' => 'welcome', 'data' => [], ], 'url' => [ 'name' => '/login', 'data' => [], ], 'abort' => [ 'type' => '403', ], 'dump' => [ 'data' => 'Dumping a unauthorized message.', ] ], "database" => [ "role_table" => "roles", "permission_table" => "permissions", "role_permission_table" => "permission_role", ], ];
使用
首先,将 MSAR\RoleManager\Traits\HasPermission;
特性添加到您的 User
模型中。
use Illuminate\Foundation\Auth\User as Authenticatable; use MSAR\RoleManager\Traits\HasPermission;; class User extends Authenticatable { use HasPermission; // ... }
然后,将 \MSAR\RoleManager\Middlewares\RoleMiddleware::class
中间件添加到您的 Karnel.php
中。
// ..... 'has_permission' => \MSAR\RoleManager\Middlewares\RoleMiddleware::class,
注意:您必须在用户表中添加一个名为
role
的列,并将用户的角色保存到此列。
此包允许将用户与权限和角色关联起来。每个角色都与多个权限相关联。角色和权限是常规的 Eloquent 模型。它们需要一个 name
,可以像这样创建:
use MSAR\RoleManager\Models\Role; use MSAR\RoleManager\Models\Permission; $role = Role::create(['name' => 'writer']); $permission = Permission::create(['name' => 'edit_articles', 'title' => 'Edit Articles']);
要创建权限,您可以使用 config/role_manager.php
文件和 permissions
数组。只需将配置值 add_permission_dynamically
设置为 true
,然后将权限添加到数组(permissions
)中。
要从前端更新角色和权限,请使用以下代码
$role = \MSAR\RoleManager\Models\Role::where('name', 'Admin')->first(); $permissions = $request->permissions; // [1,2] | checkbox array input | permissions ids $role->permissions()->sync($permissions);
要检查用户是否有权限,请将中间件添加到路由中
Route::get('/users', 'UserController@index')->middleware('has_permission:view_users')->name('home');
您可以使用多个权限,方法是用管道符(|)分隔,例如:has_permission:view_users|update_users
使用 Blade 指令 您可以使用这些 blade 扩展:具有角色:具有角色
@hasrole(role) @elsehasrole(another_role) @endhasrole
具有权限:用户可以
@ucan(permission) @elseucan(another_permission) @enducan
使用辅助函数
rmHasRole($role); // pipe string | array | string rmHasPermission($permission); // pipe string | array | string
待办事项
- 改进代码库
- 添加命令以添加角色或分配权限