几秒钟内设置 Laravel Eloquent 守护者

0.2.0 2021-03-13 08:46 UTC

This package is auto-updated.

Last update: 2024-09-15 17:29:09 UTC


README

使用 Eloquent 在几秒钟内设置 Auth 守护者。

Unit Tests

简介

Laravel 守护者提供了一种非常方便的方式来根据用户的 类型 授权应用程序的不同区域。对于许多项目来说,关卡和权限就足够了,但守护者更进一步,允许你为每个认证区域使用专用的 Eloquent 模型。

然而,设置守护者可能会有些困惑,特别是如果你对这一切都不熟悉。文档很详细,但由于守护者底层的特点,可能会令人不知所措。

这就是 Nightguard 被创建的原因。你不需要深入研究配置文件和从文件跳到文件,你可以用 一行代码 在自己的自定义 Eloquent 模型周围设置一个守护者!

安装

您可以通过 composer 安装 Nightguard

composer require lukeraymonddowning/nightguard

用法

想象一下,我们想为我们的应用程序创建一个管理面板。我们想要一个专门的 administrators 表和 Administrator Eloquent 模型。只有管理员应该允许进入管理面板。即使有一个 User 模型在默认守护者下登录,他们也不应该能够访问任何管理路由。

让我们首先为管理员创建一个模型和迁移。Nightguard 提供了一个非常方便的 Artisan 命令,该命令将创建一个模型和迁移,包含您将需要的所有认证列

php artisan nightguard:model Administrator

这很简单!

处理完这些之后,剩下的就是设置守护者。进入你的 AuthServiceProvider,并在你的 boot 方法中添加以下代码

public function boot() 
{
    Nightguard::create(App\Models\Administrator::class);
}

... voilà!你已经成功注册了一个只有认证的 Administrator 可以访问的关卡。

如果你创建了一个由你新的 'administrator' 关卡保护的路由,它将会被保护

Route::get('example-url', fn() => 'Super secret!')->middleware('auth:administrator');

守护者的名称将自动根据传递给 create 方法的模型的类名设置。守护者名称总是单数且短横线分隔的。

Nightguard 门面

Nightguard 门面包括以下方法

create($model, $guard = null)

这是注册新 Eloquent 守护者的方法。第一个参数应该是你的 Eloquent 模型的类名(例如:App\Models\Administrator::class)。

第二个参数完全是可选的,只有在你想使用自定义守护者名称时才需要。省略时,Nightguard 将根据你的模型名称猜测守护者名称。

你应该将这些方法调用放在某个 Service Provider 的 boot 方法中。

命令

Nightguard 为你提供了以下 Artisan 命令

php artisan nightguard:model YourModelName

此命令允许你快速生成新的 Authenticatable Eloquent 模型的文件。数据库将包含所有所需的列,并且模型将自动扩展正确的类,并具有所需的特性和转换。