oxid-esales / graphql-base
OXID eSales GraphQL基础模块
Requires
- php: ^8.1
- ext-json: *
- ecodev/graphql-upload: ^7.0.0
- laminas/laminas-diactoros: ^2.5
- lcobucci/jwt: ^4.1
- myclabs/php-enum: ^1.8
- symfony/cache: *
- thecodingmachine/graphqlite: ^6.2
Requires (Dev)
- codeception/codeception: ^5.0
- codeception/module-asserts: ^3.0
- codeception/module-db: *
- codeception/module-phpbrowser: *
- codeception/module-rest: *
- mikey179/vfsstream: ~1.6.8
- oxid-esales/codeception-modules: dev-b-7.1.x
- oxid-esales/oxideshop-ce: dev-b-7.1.x
- phpmd/phpmd: ^2.11
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.4
- squizlabs/php_codesniffer: 3.*
Conflicts
- oxid-esales/oxideshop-ce: <7.1
- dev-b-7.2.x
- v9.0.0
- v9.0.0-rc.1
- v8.1.1
- v8.1.0
- v8.0.1
- v8.0.0
- v7.0.2
- v7.0.1
- v7.0.0
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.2.1
- v5.2.0
- v5.2.0-rc2
- v5.2.0-rc1
- v5.1.1
- v5.1.0
- v5.0.0
- v4.0.0
- v3.2.0
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.0
- v2.5.0
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.0
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- dev-b-7.2.x-token_expiration-OXDEV-8688
- dev-b-7.2.x-password_change_token_invalidation-OXDEV-8407
- dev-b-7.2.x-tokens_on_pwd_change-OXDEV-8689
- dev-b-7.2.x-pwd_change_events-OXDEV-8682
- dev-b-7.1.x
- dev-b-7.1.x-update-changelog-OXDEV-7726
- dev-b-7.0.x
- dev-b-7.1.x-invalidate_tokens-OXDEV-4018
- dev-b-7.1.x-OXDEV-8295
- dev-b-7.1.x-cleanup-workflow-OXDEV-8287
- dev-OXDEV-5415_prototype
- dev-b-6.5.x
- dev-b-6.4.x
- dev-b-7.0.x-outsourcing_doc_generation-OXDEV-7707
- dev-b-7.0.x-review_preparation-OXDEV-7003
- dev-b-7.0.x-update_documentation-OXDEV-6731
- dev-b-7.0.x-fix_translations
- dev-b-7.0.x-github_actions-OXDEV-6153
- dev-b-7.0.x_sonar_fix
- dev-b-6.5.x-update-phpstan
- dev-master
- dev-b-6.5.x-update_docs-OXDEV-6060
- dev-master-installable-OXDEV-5960
- dev-b-6.5.x_extend_docs
- dev-master-inject_variables-OXDEV-5257
- dev-SPIKE-hide_queries_mutations-OXDEV-4897
- dev-b-6.4.x_patch
- dev-b-6.4.x_graphqlite5
- dev-b-6.3.x
- dev-b-6.2.x
- dev-master-bump_jwt_version
- dev-master-PHP8
- dev-SPIKE-check-usage-of-subject-arg-in-authorization-is-allowed-OXDEV-4551
- dev-OXDEV-4383-graphql_upload-OXDEV-4479
- dev-master-spike_schema_visibility_notifications-OXDEV-4463
- dev-SPIKE-schema_visibility-OXDEV-4449
- dev-master-session_spike-OXDEV-4376
- dev-master-anonymous-spike-OXDEV-4354
- dev-SPIKE-account_schema_documentation
- dev-RESEARCH-hot-to-simplify-schema-script
- dev-SPIKE_codeception_xdebugging-OXDEV-3948
This package is auto-updated.
Last update: 2024-09-20 13:00:50 UTC
README
此模块提供
- 一个基本的GraphQL实现,用于OXID eShop
- 使用JWT进行授权和认证
- 一个查询,用于登录并获取JWT进行后续认证
文档
- 完整文档,包括GraphQL模式,可以在这里找到。
用法
这假设您已经安装并运行了OXID eShop(至少是OXID-eSales/oxideshop_ce: v7.2.0
组件,它是7.2.0
编译的一部分)。
分支兼容性
- 10.x版本(或b-7.2.x分支)与最新7.2.x商店编译版本或b-7.2.x商店编译分支兼容
- 9.x版本(或b-7.1.x分支)与最新7.1.x商店编译版本或b-7.1.x商店编译分支兼容
- 8.x版本(或b-7.0.x分支)与最新7.0.x商店编译版本或b-7.0.x商店编译分支兼容
- 7.x版本(或b-6.5.x分支)与最新6.5.x商店编译版本或b-6.5.x商店编译分支兼容
- 6.x版本(或b-6.4.x分支)与最新6.4.x商店编译版本或b-6.4.x商店编译分支兼容
- 5.x版本(或b-6.3.x分支)与最新6.3.x商店编译版本或b-6.3.x商店编译分支兼容(注意:目前不支持PHP 8)
安装
# Install desired version of oxid-esales/graphql-base module, in this case - latest released 9.x version, While updating the version you should add additional flag --with-all-dependencies with below command.
$ composer require oxid-esales/graphql-base ^9.0.0 --with-all-dependencies
您应该在安装模块后以及每次模块更新后运行迁移。
$ vendor/bin/oe-eshop-doctrine_migration migrations:migrate oe_graphql_base
在引入模块后,您需要通过OXID eShop管理员或CLI激活它。
$ bin/oe-console oe:module:activate oe_graphql_base
更新
如果您想从旧版本更新到此模块的新版本,请运行以下命令以确保所有依赖项(包括composer.lock中的依赖项)都是兼容的。
$ composer update --with-all-dependencies
如何使用
您可以使用您喜欢的GraphQL客户端来探索API,如果您还没有安装,您可以使用Altair GraphQL客户端。
要登录并检索令牌,请将以下GraphQL查询发送到服务器
query { token ( username: "admin@admin.com", password: "admin" ) }
您可以直接在终端中使用curl
进行基本检查,以查看GraphQL基础模块是否按预期运行。要检索有效令牌,您需要将以下用户名和密码替换为有效的登录凭证。
$ curl http://oxideshop.local/graphql/ \ -H 'Content-Type: application/json' \ --data-binary '{"query":"query {token(username: \"admin@admin.com\", password: \"admin\")}"}'
您应该看到类似以下响应
{ "data": { "token": "a-very-long-jwt" } }
然后,将此token
作为HTTP Authorization
头中的授权发送到每个请求中,如下所示
Authorization: Bearer a-very-long-jwt
如何使用刷新令牌
要登录并检索刷新和访问令牌,请将以下GraphQL查询发送到服务器
query { login ( username: "admin@admin.com", password: "admin" ) { refreshToken accessToken } }
响应应包含请求的所有令牌
{ "data": { "login": { "accessToken": "the-same-long-jwt-token", "refreshToken": "a-255-character-long-string" } } }
请求将设置一个带有唯一指纹的HttpOnly
cookie。访问令牌的accessToken
声明包含此指纹的散列版本。访问令牌应作为上面描述的Bearer类型授权发送。在访问令牌的生命周期结束后,您需要刷新它。为此,您需要发送以下查询
query { refresh ( refreshToken: "your-refresh-token", fingerprintHash: "from-access-token-claims" ) }
如果令牌有效且散列与作为cookie发送的指纹匹配,您将收到一个新的响应令牌
{ "data": { "refresh": "a-new-long-jwt" } }
并且,与它一起,一个新的指纹cookie和jwt令牌中的fingerprintHash
声明。
如何扩展
关于扩展任何模块的信息可以在OXID eSales文档中找到。
如何在OXID GraphQL API文档中展示如何扩展GraphQL模块类型并实现您的新突变和查询。
测试
语法检查和静态分析
$ composer static
单元/集成/验收测试
- 将此模块安装到正在运行的OXID eShop中
- 重置商店的数据库
$ bin/oe-console oe:database:reset --db-host=db-host --db-port=db-port --db-name=db-name --db-user=db-user --db-password=db-password --force
- 运行单元/集成测试
$ ./vendor/bin/phpunit -c vendor/oxid-esales/graphql-base/tests/phpunit.xml
- 运行验收测试
$ SELENIUM_SERVER_HOST=selenium MODULE_IDS=oe_graphql_base vendor/bin/codecept run acceptance -c vendor/oxid-esales/graphql-base/tests/codeception.yml
问题
有关GraphQL模块的问题,请使用OXID eShop缺陷跟踪系统。
贡献
您想贡献力量?🙌太棒了🙌
请查看贡献指南
构建方式
许可证
OXID模块和组件许可证,见LICENSE文件。