用于构建Chief Tools的基本功能和辅助工具。

v0.73.0 2024-09-22 11:03 UTC

This package is auto-updated.

Last update: 2024-09-22 11:04:30 UTC


README

Total Downloads Monthly Downloads Latest Stable Version License

用于构建Chief Tools的基本功能和辅助工具。

配置

  • 通过Account Chief(由Socialite提供支持)进行认证
  • 配置Sentry客户端
  • Lighthouse GraphQL与基本模式和标量
    • 受会话保护的端点 /api/graphql/web
    • 受会话保护的(GraphiQL)游乐场 /api/playground
    • 受访问令牌保护的端点 /api/graphql(令牌由Account Chief管理)
  • GraphQL端点的基本API文档页面
  • 显示个人资料信息和偏好的账户页面
  • 显示团队信息、偏好和账单的团队页面
  • /contact/privacy/terms重定向到Chief Tools
  • Account Chief webhook处理器,当用户、团队或令牌更改时被通知
  • 登录事件监听器更新users表上的last_login
  • 健康检查队列任务每分钟ping QUEUE_MONITOR_URL一次,使用默认队列(当QUEUE_MONITOR_URL为空或未设置时禁用)

提供

中间件

  • ChiefTools\SDK\Middleware\AuthenticateChief
    验证请求是否来自Chief Tools
    需要将services.chief.webhook_secret配置设置为随机字符串
  • ChiefTools\SDK\Middleware\AutoAuthenticate
    使用apiweb保护者,并设置第一个认证的保护者
  • ChiefTools\SDK\Middleware\ForceSecure
    确保请求通过https://
  • ChiefTools\SDK\Middleware\MoveAccessTokenFromURLToHeader
    将访问令牌从access_token GET参数移动到Authorization
  • ChiefTools\SDK\Middleware\SecurityHeaders
    添加一组默认的安全头,可以通过在应用配置中设置chief.response.securityheaders(数组)进行配置
  • ChiefTools\SDK\Middleware\TrustProxiesOnVapor
    配置fideloper/proxyLaravel Vapor上使用

验证规则

  • ChiefTools\SDK\Rules\UUID
    验证输入值是否为UUIDv4

辅助函数

  • active($whitelist = null, $blacklist = null, $active = 'active', $inactive = '')
    根据白名单获取活动状态。用于指示活动菜单
  • timezones(): array
    返回所有时区的键值列表
  • validate($fields, $rules): bool
    验证字段是否与规则匹配。例如 validate($id, new \ChiefTools\SDK\Rules\UUID)
  • latest_ca_bundle_file_path(): string
    获取最新CA包文件的路径,使用Certainty作为底层

安装

开始要求包

composer require chieftools/sdk

发布配置文件和可选的迁移

php artisan vendor:publish --tag=chief-config

# php artisan vendor:publish --tag=chief-migrations

运行应用迁移以创建用户表

php artisan migrate

将Chief服务添加到config/services.php

<?php

return [
    'chief' => [
        'client_id'      => env('CHIEF_CLIENT_ID'),
        'client_secret'  => env('CHIEF_CLIENT_SECRET'),
        'webhook_secret' => env('CHIEF_SECRET'),
        'base_url'       => env('CHIEF_BASE_URL', 'https://account.chief.app'),
        'verify'         => env('CHIEF_VERIFY', true),
        'redirect'       => '/login/callback',
    ],
];

就是这样,你应该能够对Account Chief进行认证。

GraphQL API

您需要在您的项目中创建一个包含以下内容的routes/graphql/schema.graphql

#import ../../vendor/chieftools/sdk/routes/graphql/schema.graphql

您可以在之后向模式添加任何内容,例如

#import ../../vendor/chieftools/sdk/routes/graphql/schema.graphql

#import ./types/*.graphql
#import ./queries/*.graphql

请注意,用户类型已经提供,因此如果您想添加字段,则需要扩展它。

type OfType implements Entity {
    id: ID!
}

extend type User {
    relation: [OfType!]! @hasMany(type: "paginator")
}