ricardoboss/laravel-roles-migrations

此包已被废弃,不再维护。未建议替代包。

为您的 Laravel 角色编写迁移。

v1.2.1 2020-05-23 23:57 UTC

This package is auto-updated.

Last update: 2023-05-16 11:06:50 UTC


README

jeremykenedy/laravel-roles 添加迁移。

概述

此包旨在提供角色和权限(及其关系)的迁移功能。

  1. 安装
  2. 使用方法
    1. 创建迁移
    2. 编写迁移
    3. 示例

安装

只需使用 composer 需求此包

composer require ricardoboss/laravel-roles-migrations

使用方法

创建迁移

此包添加了一个新的抽象类 - RolesMigration - 您可以使用它来编写角色的迁移。

要添加新的迁移,只需执行

php artisan make:rolesmigration MyNewRolesMigration

来添加新的迁移(可以在 database/migrations/xxx_xx_xx_xxxxxx_my_new_roles_migration.php 中找到)。

打开迁移。注意类 extends 的是新的 RolesMigration 类,而不是 Laravel 的默认 Migration 类。

现在到了有趣的环节,编写迁移。

编写迁移

角色迁移由四个受保护的数组组成,它们定义了迁移做了什么

  • $permissions:包含要添加的权限定义
  • $roles:包含要添加的角色定义
  • $toAttach:定义了哪些权限应该附加到哪个角色
  • $toDetach:定义了哪些权限应该从哪个角色分离

每种迁移类型及其结果的示例可以在此处找到

示例

权限

$permissions = [
    [
        'name' => "List users",
        'slug' => "users.list", // optional
        'description' => "Permission to list all users."
    ]
];

slug 值是可选的。如果缺失,将从名称派生。

当迁移执行时,上述配置将向您的数据库添加一个新的权限。在回滚的情况下,此确切权限将被删除。

角色

$roles = [
    [
        'name' => "Admin",
        'level' => 10,
        'slug' => "admin", // optional
        'description' => "A user with all available permissions." // optional
    ]
];

slugdescription 值是可选的。如果 slug 缺失,将从名称派生。默认 description 值为 null

ToAdd & ToDetach

$toAttach = [
    'admin' => [
        'users.list',
        // more permissions...
    ]
];

$toAttach$toDetach 有相同的结构。它们由嵌套数组组成,声明了哪个角色获得或失去了哪些权限。

数组的键必须是角色的 slug,而值必须是权限 slug 的数组。您可以为每个角色列出任意数量的权限。

附加和分离权限的顺序很重要:如果在 $toAttach$toDetach 中都有相同的配置,则结果将是不变,因为权限首先被附加,然后被分离。

贡献

欢迎fork仓库并创建pull request。我们鼓励您遵循PSR-12编码风格指南。

待办事项列表

  • 基本迁移和回滚
  • artisan命令
  • 支持更新现有角色/权限
  • 编写测试

如果您发现缺少您想要的功能或找到一个bug,请创建一个问题并描述它。

许可证

此包的源代码是免费软件,根据MIT许可证条款分发。

感谢jeremykenedy创建了laravel-roles包,当然还要感谢taylorotwell创建了如此出色的框架。