mawuekom/laravel-access-control

一个帮助你处理Laravel中角色和权限的包

v3.4.1 2022-04-25 00:07 UTC

README

本包为您提供了易于在Laravel项目中管理角色和权限的一系列功能。

安装

您可以通过composer安装此包

composer require mawuekom/laravel-access-control

使用方法

安装后,前往 config/app.php 添加 AccontrolServiceProvider 到 providers 数组中

Laravel 5.5及以上版本使用包自动发现功能,无需编辑 config/app.php 文件。

  • 服务提供者

'providers' => [

    ...

    Mawuekom\Accontrol\AccontrolServiceProvider::class,

],
  • 发布资源

php artisan vendor:publish --tag=accontrol

或者您可以发布配置

php artisan vendor:publish --tag=accontrol --config

配置

  • 您可以更改模型的连接、模型路径,还有一个方便的模拟功能。
  • 有许多可配置的选项,已经扩展到可以通过.env文件变量进行配置。
  • 由于这个原因,可能不需要直接编辑配置文件。
  • 查看配置文件: accontrol.php.
<?php

return [
    /*
    |--------------------------------------------------------------------------
    | Slug Separator
    |--------------------------------------------------------------------------
    |
    | Here you can change the slug separator. This is very important in matter
    | of magic method __call() and also a `Slugable` trait. The default value
    | is a dot.
    |
    */

    'separator' => env('ACCONTROL_DEFAULT_SEPARATOR', '.'),

    /*
    |--------------------------------------------------------------------------
    | Accontrol feature settings
    |--------------------------------------------------------------------------
    */

    'action' => [
        'enable'                    => env('ACCONTROL_ACTIONS_ENABLE', true),
        'name'                      => env('ACCONTROL_ACTIONS_LABEL', 'Action'),
        'resource_name'             => env('ACCONTROL_ACTIONS_RESOURCE_NAME', 'action'),
        'model'                     => env('ACCONTROL_ACTIONS_MODEL', Mawuekom\Accontrol\Models\Action::class),

        'table'                     => [
            'name'                  => env('ACCONTROL_ACTIONS_DATABASE_TABLE', 'actions'),
            'primary_key'           => env('ACCONTROL_ACTIONS_DATABASE_TABLE_PRIMARY_KEY', 'id'),
        ],
    ],

    'entity' => [
        'enable'                    => env('ACCONTROL_ENTITIES_ENABLE', true),
        'name'                      => env('ACCONTROL_ENTITIES_LABEL', 'Entity'),
        'resource_name'             => env('ACCONTROL_ENTITIES_RESOURCE_NAME', 'entity'),
        'model'                     => env('ACCONTROL_ENTITIES_MODEL', Mawuekom\Accontrol\Models\Entity::class),

        'table'                     => [
            'name'                  => env('ACCONTROL_ENTITIES_DATABASE_TABLE', 'entities'),
            'primary_key'           => env('ACCONTROL_ENTITIES_DATABASE_TABLE_PRIMARY_KEY', 'id'),
        ],
    ],

    'role' => [
        'enable'                    => env('ACCONTROL_ROLES_ENABLE', true),
        'name'                      => env('ACCONTROL_ROLES_LABEL', 'Role'),
        'resource_name'             => env('ACCONTROL_ROLES_RESOURCE_NAME', 'role'),
        'model'                     => env('ACCONTROL_ROLES_MODEL', Mawuekom\Accontrol\Models\Role::class),

        'table'                     => [
            'name'                  => env('ACCONTROL_ROLES_DATABASE_TABLE', 'roles'),
            'primary_key'           => env('ACCONTROL_ROLES_DATABASE_TABLE_PRIMARY_KEY', 'id'),
        ],
    ],

    'role_user' => [
        'enable'                    => true,
        'name'                      => env('ACCONTROL_ROLE_USER_LABEL', 'Role User'),
        'resource_name'             => env('ACCONTROL_ROLE_USER_RESOURCE_NAME', 'role_user'),
        'model'                     => env('ACCONTROL_ROLE_USER_MODEL', null),

        'table'                     => [
            'name'                  => env('ACCONTROL_ROLE_USER_DATABASE_TABLE', 'role_user'),
            'primary_key'           => env('ACCONTROL_ROLE_USER_DATABASE_TABLE_PRIMARY_KEY', 'id'),
            'role_foreign_key'      => env('ACCONTROL_ROLE_USER_DATABASE_TABLE_ROLE_FOREIGN_KEY', 'role_id'),
            'user_foreign_key'      => env('ACCONTROL_ROLE_USER_DATABASE_TABLE_USER_FOREIGN_KEY', 'user_id'),
        ],
    ],

    'permission' => [
        'enable'                    => true,
        'name'                      => env('ACCONTROL_PERMISSIONS_LABEL', 'Permission'),
        'resource_name'             => env('ACCONTROL_PERMISSIONS_RESOURCE_NAME', 'permission'),
        'model'                     => env('ACCONTROL_PERMISSIONS_MODEL', Mawuekom\Accontrol\Models\Permission::class),

        'table'                     => [
            'name'                  => env('ACCONTROL_PERMISSIONS_DATABASE_TABLE', 'permissions'),
            'primary_key'           => env('ACCONTROL_PERMISSIONS_DATABASE_TABLE_PRIMARY_KEY', 'id'),
            'action_foreign_key'    => env('ACCONTROL_PERMISSIONS_DATABASE_TABLE_ACTION_FOREIGN_KEY', 'action_id'),
            'entity_foreign_key'    => env('ACCONTROL_PERMISSIONS_DATABASE_TABLE_ENTITY_FOREIGN_KEY', 'entity_id'),
        ],
    ],

    'permission_role' => [
        'enable'                    => true,
        'name'                      => env('ACCONTROL_PERMISSION_ROLE_LABEL', 'Permission Role'),
        'resource_name'             => env('ACCONTROL_PERMISSION_ROLE_RESOURCE_NAME', 'permission_role'),
        'model'                     => env('ACCONTROL_PERMISSION_ROLE_MODEL', null),

        'table'                     => [
            'name'                      => env('ACCONTROL_PERMISSION_ROLE_DATABASE_TABLE', 'permission_role'),
            'primary_key'               => env('ACCONTROL_PERMISSION_ROLE_DATABASE_TABLE_PRIMARY_KEY', 'id'),
            'permission_foreign_key'    => env('ACCONTROL_PERMISSION_ROLE_DATABASE_TABLE_PERMISSION_FOREIGN_KEY', 'permission_id'),
            'role_foreign_key'          => env('ACCONTROL_PERMISSION_ROLE_DATABASE_TABLE_ROLE_FOREIGN_KEY', 'role_id'),
        ],
    ],

    'permission_user' => [
        'enable'                    => true,
        'name'                      => env('ACCONTROL_PERMISSION_USER_LABEL', 'Permission User'),
        'resource_name'             => env('ACCONTROL_PERMISSION_USER_RESOURCE_NAME', 'permission_user'),
        'model'                     => env('ACCONTROL_PERMISSION_USER_MODEL', null),

        'table'                     => [
            'name'                  => env('ACCONTROL_PERMISSION_USER_DATABASE_TABLE', 'permission_user'),
            'primary_key'           => env('ACCONTROL_PERMISSION_USER_DATABASE_TABLE_PRIMARY_KEY', 'id'),
            'permission_foreign_key'    => env('ACCONTROL_PERMISSION_ROLE_DATABASE_TABLE_PERMISSION_FOREIGN_KEY', 'permission_id'),
            'user_foreign_key'          => env('ACCONTROL_PERMISSION_ROLE_DATABASE_TABLE_USER_FOREIGN_KEY', 'user_id'),
        ],
    ],

    'user' => [
        'model'                     => env('ACCONTROL_USERS_MODEL', App\Models\User::class),
        'name'                      => env('ACCONTROL_USERS_LABEL', 'User'),
        'resource_name'             => env('ACCONTROL_USERS_RESOURCE_NAME', 'user'),

        'table'                     => [
            'name'                      => env('ACCONTROL_USERS_DATABASE_TABLE', 'users'),
            'primary_key'               => env('ACCONTROL_USERS_DATABASE_TABLE_PRIMARY_KEY', 'id'),
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Bunch of features to enable or disable.
    |--------------------------------------------------------------------------
    */

    'enable' => [],

    /*
    |--------------------------------------------------------------------------
    | Inheritance
    |--------------------------------------------------------------------------
    |
    | By default, the plugin is configured so that all roles inherit all
    | permissions applied to roles defined at a lower level than the role in
    | question. If this is not desired, setting the below to false will disable
    | this inheritance
    |
    */

    'role_inheritance' => env('ACCONTROL_ROLES_INHERITANCE', true),

    /*
    |--------------------------------------------------------------------------
    | Add uuid support
    |--------------------------------------------------------------------------
    */

    'uuids' => [
        'enable' => env('ACCONTROL_UUID_ENABLE', true),
        'column' => env('ACCONTROL_UUID_COLUMN', '_id'),
    ],
];

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

许可

MIT许可证(MIT)。请参阅 许可文件 了解更多信息。