shitoudev / permissionmanager
使用 Backpack CRUD 为 Laravel 5 提供用户和权限管理界面。
Requires
- php: >=5.3.0
- backpack/crud: ^3.2.0
- illuminate/support: ~5.1
- spatie/laravel-permission: ^1.4
Requires (Dev)
- phpunit/phpunit: 4.*
- scrutinizer/ocular: ~1.1
README
使用 Laravel Backpack 简单易用地添加/编辑/删除用户、角色和权限的行政界面。与其他一些包不同
- 一个用户可以有多个角色;
- 一个用户可以有额外的权限,除了他在角色上的权限;
安全更新和重大变更
请 订阅 Backpack Newsletter 以了解任何安全更新、重大变更或新功能。我们每 1-2 个月发送一封电子邮件。
安装
- 在终端
$ composer require backpack/permissionmanager
- 将服务提供者添加到您的 config/app.php 文件中
Backpack\PermissionManager\PermissionManagerServiceProvider::class,
- 发布配置文件并运行迁移
$ php artisan vendor:publish --provider="Backpack\PermissionManager\PermissionManagerServiceProvider" #publish config files and migrations $ php artisan migrate #create the role and permission tables
- 在您的 User 模型上使用以下 trait
<?php namespace App; use Backpack\CRUD\CrudTrait; // <------------------------------- this one use Spatie\Permission\Traits\HasRoles;// <---------------------- and this one use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use CrudTrait; // <----- this use HasRoles; // <------ and this /** * Your User Model content */
- [可选] 在 resources/views/vendor/backpack/base/inc/sidebar.blade.php 或 menu.blade.php 中添加一个菜单项
<!-- Users, Roles Permissions --> <li class="treeview"> <a href="#"><i class="fa fa-group"></i> <span>Users, Roles, Permissions</span> <i class="fa fa-angle-left pull-right"></i></a> <ul class="treeview-menu"> <li><a href="{{ url(config('backpack.base.route_prefix', 'admin') . '/user') }}"><i class="fa fa-user"></i> <span>Users</span></a></li> <li><a href="{{ url(config('backpack.base.route_prefix', 'admin') . '/role') }}"><i class="fa fa-group"></i> <span>Roles</span></a></li> <li><a href="{{ url(config('backpack.base.route_prefix', 'admin') . '/permission') }}"><i class="fa fa-key"></i> <span>Permissions</span></a></li> </ul> </li>
- [可选] 使用 config/backpack/permissionmanager.php 中的配置文件禁止创建/更新您的角色或权限。请注意,代码中使用名称引用权限和角色。如果您允许管理员编辑这些字符串,并且他们真的这样做了,您的权限和角色检查将停止工作。
API 使用
由于该包需要 spatie/laravel-permission,因此 API 将是相同的
使用权限
可以将权限授予用户
$user->givePermissionTo('edit articles');
可以从用户中撤销权限
$user->revokePermissionTo('edit articles');
您可以测试用户是否具有权限
$user->hasPermissionTo('edit articles');
保存的权限将注册到 Illuminate\Auth\Access\Gate-class 中。因此,您可以使用 Laravel 的默认 can-function 测试用户是否具有权限。
$user->can('edit articles');
使用角色和权限
可以将角色分配给用户
$user->assignRole('writer');
可以从用户中移除角色
$user->removeRole('writer');
您可以确定用户是否具有特定的角色
$user->hasRole('writer');
您还可以确定用户是否具有给定列表中的任何角色
$user->hasAnyRole(Role::all());
您还可以确定用户是否具有给定列表中的所有角色
$user->hasAllRoles(Role::all());
assignRole、hasRole、hasAnyRole、hasAllRoles 和 removeRole 函数可以接受字符串、Role 对象或 \Illuminate\Support\Collection 对象。
可以将权限授予角色
$role->givePermissionTo('edit articles');
您可以确定角色是否具有特定的权限
$role->hasPermissionTo('edit articles');
可以从角色中撤销权限
$role->revokePermissionTo('edit articles');
givePermissionTo 和 revokePermissionTo 函数可以接受字符串或 Permission 对象。
保存的权限和角色也注册到 Illuminate\Auth\Access\Gate-class。
$user->can('edit articles');
使用 blade 指令
此包还添加了 Blade 指令来验证当前登录用户是否具有给定列表中的所有或任何角色。
@role('writer') I\'m a writer! @else I\'m not a writer... @endrole @hasrole('writer') I\'m a writer! @else I\'m not a writer... @endhasrole @hasanyrole(Role::all()) I have one or more of these roles! @else I have none of these roles... @endhasanyrole @hasallroles(Role::all()) I have all of these roles! @else I don\'t have all of these roles @endhasallroles
您可以使用 Laravel 的原生 @can 指令来检查用户是否具有特定的权限。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
屏幕截图
测试
// TODO
覆盖功能
如果您需要修改项目中的此功能
- 创建一个
routes/backpack/permissionmanager.php
文件;包将看到它,并加载您的路由文件,而不是包中的文件; - 创建控制器/模型来扩展包中的那些,并在您的新路由文件中使用它们;
- 修改任何您想要修改的新控制器/模型;
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全
如果您发现任何安全相关的问题,请通过电子邮件发送至 hello@tabacitu.ro,而不是使用问题跟踪器。
请 订阅 Backpack Newsletter 以了解任何安全更新、重大变更或新功能。我们每 1-2 个月发送一封电子邮件。
鸣谢
- Marius Constantin - 主开发人员
- Cristian Tabacitu - 首席架构师
- 所有贡献者
许可证
Backpack 免费供非商业用途,商业用途为每项目 $19。请参阅 许可证文件 和 backpackforlaravel.com 以获取更多信息。