fdt2k/backpack-auth

为 backpack 定制的认证

3.0.2 2024-04-11 20:37 UTC

README

关于

它替换了 backpack 中的某些认证部分,强制用户在首次登录时更改密码。它还提供了 dev 工具,如 seeders 和 seeds,用于 @fdt2k/backpack-devtools

安装

sail composer require fdt2k/backpack-auth --prefer-source

管理员权限和角色

新方法

sail artisan kda:backpack-auth:install

旧方法

sail artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
sail artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"
sail artisan vendor:publish --provider="Backpack\PermissionManager\PermissionManagerServiceProvider"
sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="migrations"
sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="config"

然后 删除 routes/custom/permissions.php

配置管理员权限

管理员拥有所有权限

修改 app/Providers/AuthServiceProvider.php

public function boot()
{
    //....
    Gate::before(function ($user, $ability) {
        return $user->hasRole('admin') ? true : null;
    });

    ///   ....
}

在 config/backpack/base.php 中

禁用 setup_auth_routes

添加 ForcePasswordChange 中间件和取消注释 UseBackpackAuthGuardInsteadOfDefaultAuthGuard 中间件

 'middleware_class' => [
     // others
    \KDA\Backpack\Auth\Http\Middleware\ForcePasswordChange::class,
    \Backpack\CRUD\app\Http\Middleware\UseBackpackAuthGuardInsteadOfDefaultAuthGuard::class
   //others
],

config/backpack/base.php

可选地发布所需的文件到您的项目

sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="models"
sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="migrations"
sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="config"
sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="routes"

配置 seeder

如果需要则发布

sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="seeders"

如果使用 @fdt2k/backpack-devtools

您可以注册这些种子到 config/kda/devtools.php

'seeds' => [
    'users',
    'roles',
    'permissions',
    'role_has_permissions',
    'model_has_roles',
    'model_has_permissions'
]

自动化 db:seed

在 database/seeders/DatabaseSeeder.php 中

public function run()
{
    $this->call([
        \KDA\Backpack\Auth\Seeders\AdminUserSeeder::class, // if needed & using config generation
        \KDA\Backpack\Auth\Seeders\Seeder::class,
    ]);
}

在 config/kda/backpack/auth.php 中,您可以找到预先生成的用户、角色和权限的示例。使用以下方式发布:

sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="config"    

然后您可以运行角色、权限和用户生成器:

sail artisan db:seed --class="\KDA\Backpack\Auth\Seeders\AdminUserSeeder"

配置管理员控制器(可选)

sail artisan vendor:publish --provider="KDA\Backpack\Auth\ServiceProvider" --tag="controllers"

更新 routes/backpack/permissionmanager.php(可选)

将命名空间 "Backpack\PermissionManager\app\Http\Controllers" 替换为 "App\Http\Controllers\Admin"

\KDA\Backpack\Auth\Http\Controllers\Traits\CrudPermission

这是一个帮助程序,用于自动将权限绑定到 Backpack 控制的 CRUD 操作

 public function setup()
{
    parent::setup();
    $this->loadPermissions('group');

}

默认情况下,它将 group.read &&& group.write 权限绑定如下

    //permissions
    'read' => [
        //operations
        'list',
        'show',
        'preview'
    ],
    'write'=> [
        'create',
        'delete',
        'update',
        'edit'
    ]

您可以使用这种方式指定其他权限

第二个参数定义了您想设置权限的操作

第三个是应用于哪些操作的权限

 public function setup()
{
    parent::setup();
    //only apply permission on the list operation.
    $this->loadPermissions('anothergroup',['list'],['read'=>['show']]);

}