roboroads / lighthouse-settings
Lighthouse 插件,用于向您的 graphql 添加设置
v1.1.0
2022-07-05 15:51 UTC
Requires
- php: >=7.4
- illuminate/support: >=8
- nuwave/lighthouse: >=5
- spatie/laravel-settings: >=2
Requires (Dev)
- captainhook/captainhook: ^5.10
- laravel/pint: ^0.2.0
README
一种优雅的方式,让 Lighthouse 能够从 laravel-settings 插件接收和更新类型化的设置。
安装
composer require roboroads/lighthouse-laravel-settings
安装后,您可能需要重新生成 ide-helper 文件。
php artisan lighthouse:ide-helper
用法
首先,像平常一样创建您的设置。假设我们有一个以下设置的文件
class GeneralSettings extends Settings { public string $name; public string $url; public string $description; public static function group(): string { return 'general'; } }
查询设置
使用 @settings 指示 Lighthouse 使用与类型相同的名称来获取设置
type GeneralSettings { name: String! url: String! description: String! } type Query { generalSettings: GeneralSettings! @settings }
注意:如果您的类型不匹配模式
App\Settings\TypeName(在这种情况下App\Settings\GeneralSettings),您可以使用@settings(class: "\\Path\\To\\YourSettings")。
更改设置
使用 @settings 指示 Lighthouse 使用与类型相同的名称来更新设置
type GeneralSettings { name: String! url: String! description: String! } type Mutation { updateGeneralSettings( name: String! url: String! description: String! ): GeneralSettings! @settings }
注意:除了 @can 之外,您还可以像更新模型一样使用 @rules、@trim 等。
使用 @canSettings 替代 @can
由于 Lighthouse 极力希望将 @can 与实际模型关联,因此您必须使用 @canSettings 来使用授权用户设置的能力。
type Mutation { updateGeneralSettings( name: String! url: String! description: String! ): GeneralSettings! @settings @canSettings(ability: "editSettings") }
//Defining a gate Gate::define('editSettings', function (User $user, string $settingsClass) { return $user->isAdmin(); });
可选配置
如果您想调整此插件,可以将 config/laravel-settings.php 发布,包含以下内容:
php artisan vendor:publish --provider="Roboroads\LighthouseSettings\ServiceProvider"
settings-namespace
更改此包在搜索设置时默认搜索的命名空间。