saritasa/roles-simple

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

用户具有 field role_id 和对应的查找表

1.2.1 2020-05-12 21:49 UTC

This package is auto-updated.

Last update: 2024-09-09 14:00:13 UTC


README

PHP CodeSniffer Release PHPv Downloads

Laravel 应用程序的简化用户角色实现:用户具有 role_id 字段,存在对应的角色查找表。

用法

安装 saritasa/roles-simple

$ composer require saritasa/roles-simple

如果使用 Laravel 5.4 或更低版本,或者 5.5+ 且已禁用 包发现,则在 config/app.php 中添加 RolesServiceProvider 服务提供者

'providers' => array(
    // ...
    Saritasa\Roles\RolesServiceProvider::class,
)

然后发布数据库迁移

php artisan vendor:publish --provider=Saritasa\\Roles\\RolesServiceProvider

可用类

HasRoles

提供 hasRole 方法;

示例:

class User extends Model implements IHasRoles
{
    uses HasRoles
}

然后在代码的某个地方

if ($user->hasRole(Roles::ADMIN)) { ... }}
$user->role->name;

hasRole($role) 方法可以接受角色 ID(整数)或角色 slug(字符串)。使用角色 ID 会更快一些,因为它不需要从查找表中读取角色记录。

角色(模型)

您可以使用内置类 Saritasa\Roles\Models\Role 在迁移中列出模型或创建新的角色,或在代码中。

角色模型包含 3 个字段

  • id(整数)- 主键
  • name(字符串)- 应对用户可见并可更改,根据需要。可以包含任何字符(包括空格),大小写不敏感。不要使用角色名称作为标识符(例如,用于搜索)。
  • slug(字符串)- 可读的角色标识符,应保持不变,而名称可以更改。您可以在代码中通过 slug 引用角色(例如,在 hasRole() 方法中)。建议将 slugs 保持小写,使用下划线或破折号代替空格。
class AddRoles extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Role::firstOrCreate(['name' => 'User', 'slug' => 'user']);
        Role::firstOrCreate(['name' => 'Admin', 'slug' => 'admin']);
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Role::whereSlug('user')->delete();
        Role::whereSlug('admin')->delete();
    }
}

角色(枚举)

包包含枚举 Saritasa\Roles\Enums\Roles,其中包含 2 个预定义角色:用户和管理员,这适用于许多应用程序。

但您不仅限于这些角色,您可以定义自己的枚举(扩展此枚举或从头开始创建)并使用它。

class Roles extends Enum
{
    const USER = 1;
    const SUPER_ADMIN = 2;
    const SCHOOL_ADMIN = 3;
}

中间件

您可以在路由中使用中间件来限制对某些页面的访问

Router::get('/admin', [
    'as' => 'admin.dashboard',
    'middlware' => 'role:admin'
]

使用别名注册的中间件由服务提供者注册,无需手动注册。

格式为 role:role_slug1,role_slug2,role_slug3

如果用户没有所需的任何角色,将抛出 AccessDeniedHttpException 异常

贡献

  1. 创建分支,检出它
  2. 像往常一样本地开发。 代码必须遵循 PSR-1PSR-2 - 运行 PHP_CodeSniffer 以确保代码遵循样式指南
  3. 使用单元测试覆盖添加的功能 并运行 PHPUnit 以确保所有测试通过
  4. 更新 README.md 以描述新的或更改的功能
  5. CHANGES.md 文件中添加更改描述。使用 语义化版本控制 约定来确定下一个版本号。
  6. 准备好后,创建 pull request

创建快捷方式

如果您已安装GNU Make,则可以使用以下快捷方式

  • make cs(代替php vendor/bin/phpcs)- 使用PHP_CodeSniffer执行静态代码分析,以检查代码风格
  • make csfix(代替php vendor/bin/phpcbf)- 使用PHP_CodeSniffer自动修复代码风格违规(例如,PSR-2代码格式化违规),在可能的情况下
  • make test(代替php vendor/bin/phpunit)- 使用PHPUnit运行测试
  • make install - 代替composer install
  • make all 或不带参数的make - 依次调用上述的installcstest任务 - 项目将被组装,通过linter进行检查,并通过单个命令进行测试

资源