lukeraymonddowning / nightguard
几秒钟内设置 Laravel Eloquent 守护者
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.13
- pestphp/pest-plugin-expectations: ^1.0
- spatie/laravel-ray: ^1.16
This package is auto-updated.
Last update: 2024-09-15 17:29:09 UTC
README
使用 Eloquent 在几秒钟内设置 Auth 守护者。
简介
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 模型的文件。数据库将包含所有所需的列,并且模型将自动扩展正确的类,并具有所需的特性和转换。