fdt2k / backpack-auth
为 backpack 定制的认证
3.0.2
2024-04-11 20:37 UTC
Requires
- backpack/crud: ^4.0 | ^5.0
- backpack/permissionmanager: ^6.0
- fdt2k/backpack-custom-fields: dev-master || dev-master-2 || 1 - 2
- fdt2k/backpack-widgets: dev-master || ^2.0
- fdt2k/laravel-package-service-provider: dev-dev-v2 ||^2.0
- spatie/laravel-permission: ^5
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']]);
}