roboroads/lighthouse-settings

Lighthouse 插件,用于向您的 graphql 添加设置

v1.1.0 2022-07-05 15:51 UTC

This package is auto-updated.

Last update: 2024-09-30 01:27:09 UTC


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

更改此包在搜索设置时默认搜索的命名空间。