abdul/laravel-role-permission

此包已被弃用且不再维护。作者建议使用 abdul/laravel-role-permission 包。

从后端配置 Laravel 路由权限

v1.0.1 2020-08-01 14:36 UTC

This package is auto-updated.

Last update: 2022-05-20 08:54:22 UTC


README

Packagist Version Packagist License Packagist Downloads

一个简单灵活的 Laravel 管理员角色和权限管理。

此包的基本思想基于 (amiryousefi/laravel-permission) 模块。

为什么我们需要 Laravel 权限包

在许多项目中,我们需要为我们的客户实现基于角色的权限管理系统。这将使得基于 Laravel 的 Web 项目的开发和访问管理变得简单。

如何通过管理员面板添加权限

安装后,如果您访问 路由,所有路由都属于 auth.role 中间件将出现,您可以根据您的应用需求添加到角色。

role form

如何使用

我们的目标是使这个包尽可能简单灵活。

此包创建了一个包含所有路由的列表,并将这些权限列表分配给用户角色。

尽管 laravel-role-permission 包做了大部分工作,但您可以轻松扩展它并实现您自己的授权系统。

安装

通过 composer 安装此包。在您的终端中运行此命令

$ composer require abdul/laravel-role-permission

之后,您需要运行迁移文件

$ php artisan migrate

如何授权用户

此包向 users 表添加了一个 role_id。角色存储在 roles 表中。您可以在管理员面板中为角色分配权限,然后分配角色给用户,然后只需将 auth.role 中间件分配给您的路由。

将路由分配给角色

除了中间件和其他路由设置之外,您还可以使用 role 键在您的路由组中分配角色给路由。

您可以将一个角色的路由放在一个 Route 组中,如下所示

Route::group([
    'middleware' => 'auth.role',
    'prefix' => 'config',
    'module' => 'Role',
    'role' => 'admin',
    ...
],function (){
    Route::get('/roles', 'RoleController@index');
});

当然,您可以有尽可能多的这样的路由组。

然后您需要运行这个 artisan 命令来注册所有权限

$ php artisan permissions:generate 

此命令将注册所有权限并将权限分配给角色。

如果您向此命令添加 fresh 选项,则它将删除所有数据并生成新的路由数据

$ php artisan permissions:generate --fresh

现在只有拥有适当角色的用户才能访问分配给他们的路由。

请记住,此包不处理将角色分配给用户。您需要在您的管理面板或其他处理用户的地方处理此问题。

如何创建角色

php artisan permissions:generate 命令将在它们不存在的情况下创建所有在路由中定义的角色。

此外,您还可以创建一个种子文件来填充 roles 表。它只需要一个 name 字段。

您的 RolesSeeser 文件可以看起来像这样。

Role::firstOrCreate(['name' => 'admin']);
Role::firstOrCreate(['name' => 'customer']);

别忘了在您的种子文件中导入 Role 模型。

use Abdul\RolePermission\Models\Role;

如何清除权限

要清除已注册的权限,您可以运行以下命令

$ php artisan permissions:clear

您可以使用此命令清除特定角色的所有权限数据

$ php artisan permissions:clear --roles role1 role2

要仅清除权限列表,请使用带有此选项的 permissions:clear 命令

$ php artisan permissions:clear --tables permissions

要清除所有角色

$ php artisan permissions:clear --tables roles

要仅清除权限角色关系

$ php artisan permissions:clear --tables permission_role

此命令会删除分配给角色的所有权限,因此您可以重新生成权限

此外,您还可以组合使用这些选项

$ php artisan permissions:clear --roles admin --tables permission_role