itstructure/laravel-rbac

Laravel RBAC管理包

3.0.15 2024-07-15 13:50 UTC

README

Latest Stable Version Latest Unstable Version License Total Downloads Build Status Scrutinizer Code Quality

1 简介

LaRbac - 为Laravel框架提供管理的包,支持以下数据

  • 角色
  • 权限
  • 为用户分配角色

RBAC package structure

2 依赖关系

  • laravel 8+ | 9+ | 10+ | 11+
  • Bootstrap 4用于样式
  • JQuery
  • php >= 7.3.0
  • composer

3 安装

注意!

版本 3.x 用于laravel 8+9+10+11+

版本 2.x 用于laravel 67。您可以使用分支 laravel67-rbac2.x 版本一起使用。

3.1 从远程仓库进行一般安装

运行composer命令

composer require itstructure/laravel-rbac "^3.0.15"

3.2 接下来的内部安装步骤

注意事项

  • 确保您的项目中已经存在一个用户表。

  • 确保您的项目中已经存在一个用户表模型。

建议

如果您还没有任何布局,安装例如 AdminLTE 是有用的,或者您可以制作您自己的特殊布局模板。因为在这个包中,没有专门的布局。但在配置中,必须设置它(见下一个点 2 关于配置)。

开始吧

  1. 发布文件。

    注意: rbac.php 配置文件和种子器 LaRbacDatabaseSeederPermissionSeederRoleSeeder 必须确保发布!

    • 要发布配置,运行命令

      php artisan rbac:publish --only=config

      它将配置文件存储到 config 文件夹中。

    • 要发布种子器,运行命令

      php artisan rbac:publish --only=seeders

      它将种子器文件存储到 database/seeders 文件夹中。

    • 要发布迁移,运行命令

      php artisan rbac:publish --only=migrations

      它将迁移文件存储到 database/migrations 文件夹中。

    • 要发布视图,运行命令

      php artisan rbac:publish --only=views

      它将视图文件存储到 resources/views/vendor/rbac 文件夹中。

    • 要发布翻译,运行命令

      php artisan rbac:publish --only=lang

      它将翻译文件存储到 resources/lang/vendor/rbac 文件夹中。

    • 要发布所有部分,运行没有 only 参数的命令

      php artisan rbac:publish

    否则,您可以使用 --force 参数来重写已发布的文件。

  2. 配置发布的 config/rbac.php 文件

    • 设置 layout。例如:'layout' => 'adminlte::page'

    • 如果需要,更改 userModelClass

    • 设置 adminUserId,您希望拥有管理员角色的用户。 至少在初始阶段

      这对于下一次系统让您进入Rbac控制面板是必要的,在您为自己分配了管理员角色之后(稍后见点 4)。

    • 您可能需要更改 memberNameAttributeKey

      这是通过 Administrable 特性的 getMemberNameAttribute() 方法在控制面板中显示用户名。它可以是 字符串回调

      'memberNameAttributeKey' => function ($row) {
          return $row->first_name . ' ' . $row->last_name;
      }
  3. 运行命令以运行迁移和种子器

    php artisan rbac:database

    或者可选的

    只运行迁移 php artisan rbac:database --only=migrate

    只运行种子 php artisan rbac:database --only=seed

    • 种子器的替代方案。

      您可以将发布的rbac LaRbacDatabaseSeeder 种子器类设置到特殊的 DatabaseSeeder

      use Illuminate\Database\Seeder;
      class DatabaseSeeder extends Seeder
      {
          public function run()
          {
              $this->call(LaRbacDatabaseSeeder::class);
          }
      }

      运行以下命令: php artisan db:seed

  4. 运行以下命令为具有标识符 adminUserId 的用户设置管理员角色,该标识符在 第2点 定义。

    php artisan rbac:admin

4 使用方法

注意事项:

  • 确保您在应用程序中使用 Bootstrap 4 进行样式设计,并使用 JQuery

  • 确保 Laravel 初始工厂授权已在您的应用程序中运行。

4.1 模型部分

根据 Itstructure\LaRbac\Interfaces\RbacUserInterface,使用 Itstructure\LaRbac\Traits\Administrable 特性,如下例所示

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Itstructure\LaRbac\Interfaces\RbacUserInterface;
use Itstructure\LaRbac\Traits\Administrable;
class User extends Authenticatable implements RbacUserInterface
{
    use Notifiable, Administrable;

    protected $fillable = [
        'name', 'email', 'password', 'roles'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

4.2 路由部分

已集成基本 RBAC 路由来管理 用户角色权限。请参阅 routes.php 包文件。

这些路由受以下保护

  • 中间件 auth(可由配置编辑)。
  • 权限 can:administrate(可由配置编辑)。

这些路由允许您访问以下路由

  • 用户部分

    对于 get 请求方法

    • http://example-domain.com/rbac/users
    • http://example-domain.com/rbac/users/show/{id}
    • http://example-domain.com/rbac/users/edit/{id}

    对于 post 请求方法

    • http://example-domain.com/rbac/users/update/{id}
    • http://example-domain.com/rbac/users/delete
  • 角色部分

    对于 get 请求方法

    • http://example-domain.com/rbac/roles
    • http://example-domain.com/rbac/roles/show/{id}
    • http://example-domain.com/rbac/roles/create
    • http://example-domain.com/rbac/roles/edit/{role}

    对于 post 请求方法

    • http://example-domain.com/rbac/roles/store
    • http://example-domain.com/rbac/roles/update/{role}
    • http://example-domain.com/rbac/roles/delete
  • 权限部分

    对于 get 请求方法

    • http://example-domain.com/rbac/permissions
    • http://example-domain.com/rbac/permissions/show/{id}
    • http://example-domain.com/rbac/permissions/create
    • http://example-domain.com/rbac/permissions/edit/{permission}

    对于 post 请求方法

    • http://example-domain.com/rbac/permissions/store
    • http://example-domain.com/rbac/permissions/update/{permission}
    • http://example-domain.com/rbac/permissions/delete

4.3 网关部分

已集成基本 RBAC 网关,用于控制对应用程序中某些资源的访问。请参阅提供者文件 RbacAuthServiceProvider.php

它提供了以下网关定义

  • administrate
  • assign-role
  • delete-member
  • view-record
  • create-record
  • update-record
  • delete-record
  • publish-record

更多信息请参阅 Laravel 网关

5 视图示例

用户

RBAC package structure

角色

RBAC package structure

权限

RBAC package structure

许可证

版权 © 2018-2024 Andrey Girnik girnikandrey@gmail.com

根据 MIT 许可证 许可。有关详细信息,请参阅 LICENSE.txt。