mamikon / role-manager
Laravel 角色和权限管理器
Requires
- php: >=5.6.4
- laravel/framework: >=5.4.0
- mamikon/role-manager: *
This package is not auto-updated.
Last update: 2021-05-15 10:03:14 UTC
README
laravel的角色和权限管理系统。本软件包实现了Laravel中的角色管理功能。您可以通过简单的方式创建新权限并将它们分配给角色。
安装
通过Composer
$ composer require mamikon/role-manager
然后,将ServiceProvider添加到config/app.php
文件中的providers数组中。
Mamikon\RoleManager\RoleManagerProvider::class,
您可以使用外观以缩短代码。将其添加到您的别名中
'RoleManager' => Mamikon\RoleManager\RoleManagerFacade::class,
要发布配置设置,请使用
$ php artisan vendor:publish --provider="Mamikon\RoleManager\RoleManagerProvider"
它将发布角色和权限管理的默认视图和roleManager.php
配置文件。
在开始之前,让我们先浏览一下配置文件并做一些配置。
配置文件包含默认权限和角色。
它将为RoleManager软件包创建一些权限,在发布软件包后,您可以直接添加一些新权限,这比从管理面板更方便,可以使您的应用程序更容易部署。每个权限都必须包含数组键,它将是权限的名称,该键的值必须是一个数组,其中包含描述。除了这些,您还可以添加类和方法以进行额外的权限检查。
'edit_post' => [ 'description' => "Edit Post", 'class' => App\Permissions\Post::class, // not required 'method' => 'canEdit', // not required ],
然后您可以创建默认角色。每个数组元素必须包含键,该键将是角色名称,值将是角色的描述。
'super-admin' => "Can Do everything",
然后您可以分配一些权限给角色。
'assignPermissionsToRole'=> [ 'editor' => [ 'edit_post', 'publish_post', //... ] ],
您可以使用星号来将所有权限添加到该角色。
'assignPermissionsToRole'=> [ 'super-admin' => '*' ],
然后您可以将角色添加到用户。
'assignRoleToUser' => [ 'super-admin'=>'admin@pass.com', 'editor'=>'editor@pass.com', ],
所有这些配置将在运行permission:migrate
artisan命令后加载。
$ php artisan permissions:migrate
但在那之前,我们必须迁移我们的表。默认情况下,它将创建4个表
- permissions
- roles
- roles_user
- permissions_roles
如果您的数据库中存在permissions和roles表,您可以从配置文件更改它们的名称,然后迁移。
'permissionsTable'=>'other_permissions', 'rolesTable'=>'other_roles',
RoleManager软件包将为角色管理控制页面创建路由
- /
- /role(resource)
- /permission(resource)
- /user/{id}
并且它们将默认以role-manager
为前缀。
'routePrefix'=>'role-manager',
默认视图将从layouts.app
扩展。
'extendedView'=>'layouts.app',
如果您不想扩展任何视图,您可以提供false
值。您必须提供要扩展的部分。
'extendedSection'=>'content',
所有配置(除默认角色、权限和默认分配外)都可以从.env
加载。
ROLE_MANAGER_PERMISSIONS_TABLE=permissions
ROLE_MANAGER_ROLES_TABLE=roles
ROLE_MANAGER_EXTENDED_VIEW=layout.app
ROLE_MANAGER_EXTENDED_SECTION=content
ROLE_MANAGER_EXTERNAL_BOOTSTRAP=false
ROLE_MANAGER_EXTERNAL_JQUERY=false
ROLE_MANAGER_ROUTE_PREFIX=role-manager
USERS_PER_PAGE=15
PERMISSIONS_PER_PAGE=15
ROLES_PER_PAGE=15
完成所有配置后运行迁移
$ php aritsan migrate
然后
$ php aritsan permissions:migrate
用法
RoleManager不会更改Laravel授权中的任何逻辑。您可以使用标准的Laravel外观、方法和函数。
if (Gate::allows('update-post', $post)) { // The current user can update the post... } if (Gate::denies('update-post', $post)) { // The current user can't update the post... }
此外,RoleManager外观还有2个辅助函数
RoleManager::assignRole(mixed $user, mixed $role)
RoleManager::removeRole(mixed $user, mixed $role)
其中$user参数可以是User模型或user_id(int),$role参数可以是Role模型、role_id(int)或角色名称(string)
变更日志
请参阅变更日志了解最近的变化信息。
贡献
请参阅 CONTRIBUTING 和 CONDUCT 获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 m.araqelyan@gmail.com 反馈,而不是使用问题跟踪器。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 获取更多信息。