abdul / laravel-role-permission
This package is auto-updated.
Last update: 2022-05-20 08:54:22 UTC
README
一个简单灵活的 Laravel 管理员角色和权限管理。
此包的基本思想基于 (amiryousefi/laravel-permission) 模块。
为什么我们需要 Laravel 权限包
在许多项目中,我们需要为我们的客户实现基于角色的权限管理系统。这将使得基于 Laravel 的 Web 项目的开发和访问管理变得简单。
如何通过管理员面板添加权限
安装后,如果您访问 路由,所有路由都属于 auth.role
中间件将出现,您可以根据您的应用需求添加到角色。
如何使用
我们的目标是使这个包尽可能简单灵活。
此包创建了一个包含所有路由的列表,并将这些权限列表分配给用户角色。
尽管 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