Laravel 9用户管理,支持Jetstream

v0.1.12 2023-02-16 07:32 UTC

This package is auto-updated.

Last update: 2024-09-13 15:19:47 UTC


README

Laravel 8 Jetstream用户管理(使用Spatie/LaravelPermissionsLab404/LaravelImpersonate)。

功能

代理/离开

Gif showing impersonation

为用户添加角色

Gif showing hot to add Role to User

角色 - 创建和关联权限

Gif adding new Roles and adding permissions to Role

权限 - 列表和创建新权限

Gif creating new permissions

✓/⨯

安装

通过Composer

$ composer require kineticamobile/lumki

在至少有一个用户注册并关联权限的Laravel 8 Jetstream上设置

$ php artisan lumki:setup

设置说明

发布spatie/laravel-permissions

$ php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"

发布lab404/laravel-permissions

$ php artisan vendor:publish --tag=impersonate

将权限特性添加到Models/User

Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use Laravel\Jetstream\HasProfilePhoto;",
    "use Spatie\Permission\Traits\HasRoles;"
);
Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use HasProfilePhoto;",
    "use HasRoles;"
);

将代理特性添加到Models/User

Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use Spatie\Permission\Traits\HasRoles;",
    "use Lab404\Impersonate\Models\Impersonate;"
);
Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use HasRoles;",
    "use Impersonate;"
);

运行迁移

$ php artisan migrate

添加代理路由

Lumki::insertLineBefore(
        base_path("routes/web.php"),
        "Route::get('/', function () {",
        "Route::impersonate();\n"
);

在用户菜单中添加Lumki菜单项

Lumki::insertLineBefore(
        resource_path('views/navigation-dropdown.blade.php'),
        "@if (Laravel\Jetstream\Jetstream::hasApiFeatures())",
        "\n@lumki\n"
);

添加角色/权限

$r1 = Role::firstOrCreate(["name" => "Superadmin"]);
$r2 = Role::firstOrCreate(["name" => "Admin"]);
$r3 = Role::firstOrCreate(["name" => "User"]);

$p1 = Permission::firstOrCreate(['name' => 'manage users']);

$r1->givePermissionTo('manage users');

$user = User::first();
$user->assignRole($r1);
$user->assignRole($r2);
$user->assignRole($r3);

用法

自定义路由前缀

要更改路由中的前缀lumki,必须发布配置

$ php artisan vendor:publish --tag=lumki.config 

现在,您可以根据需要编辑文件config/lumki.php并将前缀从'lumki'更改为所需的任何内容,允许空字符串,如果此字段为null,则默认为' lumki'。

错误'GuardDoesNotMatch'

如果您在处理GuardDoesNotMatch错误,可能是您已修改了config/auth.php文件中的提供程序

为了解决这个问题,您可以指定模型的保护程序名称。

例如:如果您使用的是User模型,但使用LdapRecord通过ldap连接,您可以通过在上面的User模型中添加代码来解决此问题

class User extends Authenticatable
{
    // ...

    public function guardName(){
        return "web";
    }
}

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息和工作清单,请参阅contributing.md

安全

如果您发现任何与安全相关的问题,请通过作者电子邮件而不是问题跟踪器来联系。

鸣谢

许可证

许可证。有关更多信息,请参阅许可证文件