irongate/chief

此软件包已被弃用,不再维护。作者建议使用chieftools/sdk软件包。

用于构建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文档页面
  • 显示个人资料信息和偏好的账户页面
  • 显示团队信息、偏好和账单的团队页面
  • 重定向到Chief Tools的/contact/privacy/terms
  • Account Chief webhook处理器,当用户、团队或令牌发生变化时接收通知
  • 登录事件监听器,更新users表上的last_login
  • 健康检查队列作业每分钟pingQUEUE_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
    添加一组默认的安全头,可以通过在app配置中设置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

将首席服务添加到 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

请注意,User 类型已经提供,如果您想添加字段,则需要扩展该类型。

type OfType implements Entity {
    id: ID!
}

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