brickx / maintenance-switch
用于从 Filament Panels 切换维护模式的简单插件。
Requires
- php: ^8.1
- filament/filament: ^3.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.13
- nunomaduro/collision: ^7.9
- orchestra/testbench: ^8.10
- pestphp/pest: ^2.18
- pestphp/pest-plugin-arch: ^2.3
- pestphp/pest-plugin-laravel: ^2.2
- pestphp/pest-plugin-livewire: ^2.1
This package is auto-updated.
Last update: 2024-09-08 11:41:23 UTC
README
此插件允许您轻松从 Filament Panels 切换维护模式。您还可以设置一个自定义密钥令牌以绕过维护模式。
目录
安装
您可以通过 composer 安装此包
composer require brickx/maintenance-switch
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="maintenance-switch-config"
这是发布配置文件的内容
return [ 'secret' => null, 'refresh' => false, 'permissions' => false, 'role' => false, 'render_hook' => 'global-search.before', 'icon' => 'heroicon-m-beaker', 'tiny_toggle' => false, ];
您可以使用以下命令发布翻译
php artisan vendor:publish --tag="maintenance-switch-translations"
可选,您可以使用以下命令发布视图
php artisan vendor:publish --tag="maintenance-switch-views"
设置
首先,在您的面板配置中实例化此插件
use Brickx\MaintenanceSwitch\MaintenanceSwitchPlugin; ... public function panel(Panel $panel) : Panel { return $panel ->plugins([ MaintenanceSwitchPlugin::make(), ]); }
Laravel 11 不再附带 PreventRequestsDuringMaintenance
中间件。您可以使用以下方式创建一个
php artisan make:middleware PreventRequestsDuringMaintenance
然后填充以下内容
<?php declare(strict_types=1); namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware; use Illuminate\Foundation\Http\MaintenanceModeBypassCookie; use Illuminate\Http\RedirectResponse; class PreventRequestsDuringMaintenance extends Middleware { /** * The URIs that should be reachable while maintenance mode is enabled. * * @var array */ protected $except = []; protected function bypassResponse(string $secret): RedirectResponse { // Optional: redirect to the Filament dashboard route when a secret is present, but of course, you can redirect to any URL you want. return redirect(route('filament.admin.pages.dashboard'))->withCookie( MaintenanceModeBypassCookie::create($secret) ); } }
如果您使用的是 Laravel 的其他版本,您可以简单地编辑现有的一个。
在 Laravel 11 中,您还需要将此中间件添加到相关路由。请考虑使用路由组来控制哪些路由应用中间件。
以下是一个 ./routes/web.php
的示例
<?php use App\Http\Middleware\PreventRequestsDuringMaintenance; use Illuminate\Support\Facades\Route; // added the middleware but only to this group, the Filament routes are unaffected Route::middleware([PreventRequestsDuringMaintenance::class])->group(function () { Route::get('/', function () { return view('welcome'); }); });
使用
该插件将在您的 Filament 管理面板中添加一个切换按钮,位于全局搜索栏左侧。
点击它将在网站处于运行状态时触发 php artisan down
命令,否则将触发 php artisan up
命令。
密钥令牌
您可以在配置文件中设置一个密钥令牌。如果这样做,您可以通过访问以下 URL 来绕过维护模式: https://your-domain.test/{secret}
。
如果将 secret
键设置为 null
,则在每次激活维护模式时都会动态生成一个随机密钥。请务必将其复制到某处,或者如果出现问题,您将不得不手动触发 php artisan up
命令。
刷新间隔
如果您想指示浏览器在一段时间后刷新页面,您可以在配置文件中设置 refresh
键。
设置为 false
时,不会发送 Refresh
HTTP 标头。您可以通过指定一个整数来定义在维护模式下重新加载页面的秒数。
可见性
默认情况下,任何已登录用户都可以切换维护模式。
如果您想将此功能限制为特定用户,您可以在配置文件中设置 permissions
键。
该插件将使用 Laravel 的默认授权系统通过 User 模型上的 can
方法检查权限。它也可以很好地与 Spatie 的 Laravel Permission 包一起使用。
位置
默认情况下,切换按钮将放置在全局搜索栏之前。如果您想更改此设置,您可以在配置文件中调整 render_hook
键。
您可以使用 Filament 提供的任何渲染钩子。
主题
切换按钮的默认样式与 Filament 的默认主题配合良好。但是,为了额外的颜色和进一步的自定义,您可以将此插件的路径添加到面板的 tailwind.config.js
文件的 content
数组中
module.exports = {
content: [
'./vendor/brickx/maintenance-switch/resources/views/**/*.blade.php',
],
}
变更日志
请参阅变更日志以获取有关最近变更的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请审查我们的安全策略了解如何报告安全漏洞。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。