allay/permissionmanager

Laravel 5 的用户和权限管理界面,使用 Laravel Allay CRUD。

该包的官方仓库似乎已消失,因此该包已被冻结。

1.0 2017-08-29 21:05 UTC

This package is not auto-updated.

Last update: 2021-04-09 08:47:49 UTC


README

使用 Laravel Allay,一个管理界面可以轻松添加/编辑/删除用户、角色和权限。与一些其他包不同

  • 用户可以有多个角色;
  • 用户可以有额外的权限,除了他们在角色上拥有的权限外;

安装

  1. 在您的终端中
$ composer require allay/permissionmanager
  1. 将服务提供者添加到您的 config/app.php 文件中
Allay\PermissionManager\PermissionManagerServiceProvider::class,
  1. 发布配置文件并运行迁移
$ php artisan vendor:publish --provider="Allay\PermissionManager\PermissionManagerServiceProvider"
$ php artisan migrate 
  1. 在您的 User 模型上使用以下 traits
<?php namespace App;

use Allay\CRUD\CrudTrait; 
use Spatie\Permission\Traits\HasRoles;
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable
{
    use CrudTrait; 
    use HasRoles;

    /**
     * Your User Model content
     */
  1. [可选] 在 resources/views/vendor/allay/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('admin/user') }}"><i class="fa fa-user"></i> <span>Users</span></a></li>
      <li><a href="{{ url('admin/role') }}"><i class="fa fa-group"></i> <span>Roles</span></a></li>
      <li><a href="{{ url('admin/permission') }}"><i class="fa fa-key"></i> <span>Permissions</span></a></li>
    </ul>
  </li>
  1. [可选] 使用 config/allay/permissionmanager.php 中的配置文件在定义角色或权限后禁止创建/更新它们。请注意,在代码中使用名称引用权限和角色。如果您允许管理员编辑这些字符串并且他们确实这样做,您的权限和角色检查将停止工作。

API 使用

由于该包需要 spatie/laravel-permission,因此 API 将相同

使用权限

可以授予用户一个权限

$user->givePermissionTo('edit articles');

可以从用户中撤销一个权限

$user->revokePermissionTo('edit articles');

您可以测试用户是否有权限

$user->hasPermissionTo('edit articles');

保存的权限将与 Illuminate\Auth\Access\Gate 类一起注册。因此,您可以使用 Laravel 的默认 can 函数测试用户是否有权限。

$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 类。

$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

许可证

麻省理工学院许可证(MIT)。请参阅许可文件获取更多信息。